From 81e41c8a360e6b92c5b29ec7061d8447ded75945 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Tue, 5 Aug 2014 13:35:12 +0000 Subject: QPID-5048: add pom to build the AMQP 1.0 JMS client examples, simplify example and make it exit promptly git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1615929 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/java/README.txt | 6 +- qpid/java/amqp-1-0-client-jms/example/pom.xml | 60 +++++++++ .../apache/qpid/amqp_1_0/jms/example/Hello.java | 136 ++++++--------------- qpid/java/pom.xml | 1 + 4 files changed, 103 insertions(+), 100 deletions(-) create mode 100644 qpid/java/amqp-1-0-client-jms/example/pom.xml (limited to 'qpid/java') diff --git a/qpid/java/README.txt b/qpid/java/README.txt index b3c65abec9..439f70c040 100644 --- a/qpid/java/README.txt +++ b/qpid/java/README.txt @@ -25,10 +25,12 @@ https://cwiki.apache.org/confluence/display/qpid/Qpid+Java+Build+How+To ==== Running client examples ===== -Use maven to copy the dependencies for the examples: +Use maven to build the modules, and additionally copy the dependencies alongside their output: mvn clean package dependency:copy-dependencies -DskipTests -Now you can run the examples as follows: +Now you can then run the examples as follows: java -cp "client/example/target/classes/:client/example/target/dependency/*" org.apache.qpid.example.Drain + + java -cp "amqp-1-0-client-jms/example/target/classes/:amqp-1-0-client-jms/example/target/dependency/*" org.apache.qpid.amqp_1_0.jms.example.Hello diff --git a/qpid/java/amqp-1-0-client-jms/example/pom.xml b/qpid/java/amqp-1-0-client-jms/example/pom.xml new file mode 100644 index 0000000000..26d51f5ceb --- /dev/null +++ b/qpid/java/amqp-1-0-client-jms/example/pom.xml @@ -0,0 +1,60 @@ + + + + 4.0.0 + + + org.apache.qpid + qpid-java-build + 0.30-SNAPSHOT + ../../pom.xml + + + qpid-amqp-1-0-client-jms-examples + Qpid AMQP 1.0 JMS Client Examples + JMS client examples. + + + + org.apache.qpid + qpid-amqp-1-0-client-jms + ${project.version} + + + + org.apache.geronimo.specs + geronimo-jms_1.1_spec + ${geronimo-jms-1-1-version} + + + + + + + src/main/resources + + + src/main/java + + **/*.java + + + + + + diff --git a/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java b/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java index 500be792ba..b94c672133 100644 --- a/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java +++ b/qpid/java/amqp-1-0-client-jms/example/src/main/java/org/apache/qpid/amqp_1_0/jms/example/Hello.java @@ -18,38 +18,48 @@ * under the License. * */ - package org.apache.qpid.amqp_1_0.jms.example; -import javax.jms.*; +import java.util.Properties; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.Queue; +import javax.jms.Session; +import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.InitialContext; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Map; -import java.util.Properties; - public class Hello { - public Hello() { } public static void main(String[] args) + { + Hello hello = new Hello(); + hello.runExample(); + } + + private void runExample() { try { - Class.forName("org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory"); - - Hashtable env = new Hashtable(); - env.put("java.naming.provider.url", "hello.properties"); - env.put("java.naming.factory.initial", "org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory"); - - Context context = new InitialContext(env); + // Read the hello.properties JNDI properties file and use contents to create the InitialContext. + Properties properties = new Properties(); + properties.load(getClass().getResourceAsStream("hello.properties")); + Context context = new InitialContext(properties); + // Alternatively, JNDI information can be supplied by setting the "java.naming.factory.initial" + // system property to value "org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory" + // and setting the "java.naming.provider.url" system property as a URL to a properties file. ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("localhost"); Connection connection = connectionFactory.createConnection(); @@ -57,116 +67,46 @@ public class Hello Session producersession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = (Queue) context.lookup("queue"); - Session consumerSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - MessageConsumer messageConsumer = consumerSession.createConsumer(queue, "hello='true'"); + MessageConsumer messageConsumer = consumerSession.createConsumer(queue); + final CountDownLatch latch = new CountDownLatch(1); messageConsumer.setMessageListener(new MessageListener() { public void onMessage(final Message message) { try { - if(message instanceof TextMessage) { - System.out.println("Received text Message:"); - System.out.println("======================"); System.out.println(((TextMessage) message).getText()); } - else if(message instanceof MapMessage) - { - System.out.println("Received Map Message:"); - System.out.println("====================="); - - - MapMessage mapmessage = (MapMessage) message; - - Enumeration names = mapmessage.getMapNames(); - - while(names.hasMoreElements()) - { - String name = (String) names.nextElement(); - System.out.println(name + " -> " + mapmessage.getObject(name)); - } - - } - else if(message instanceof BytesMessage) - { - System.out.println("Received Bytes Message:"); - System.out.println("======================="); - System.out.println(((BytesMessage) message).readUTF()); - } - else if(message instanceof StreamMessage) - { - System.out.println("Received Stream Message:"); - System.out.println("========================"); - StreamMessage streamMessage = (StreamMessage)message; - Object o = streamMessage.readObject(); - System.out.println(o.getClass().getName() + ": " + o); - o = streamMessage.readObject(); - System.out.println(o.getClass().getName() + ": " + o); - o = streamMessage.readObject(); - System.out.println(o.getClass().getName() + ": " + o); - - } - else if(message instanceof ObjectMessage) - { - System.out.println("Received Object Message:"); - System.out.println("========================"); - ObjectMessage objectMessage = (ObjectMessage)message; - Object o = objectMessage.getObject(); - System.out.println(o.getClass().getName() + ": " + o); - } else { - System.out.println("Received Message " + message.getClass().getName()); + System.out.println("Received enexpected message type: " + message.getClass().getName()); } + + latch.countDown(); } catch (JMSException e) { System.out.println("Caught exception in onMessage(): " + e.getMessage()); - e.printStackTrace(); //TODO } - } }); connection.start(); - MessageProducer messageProducer = producersession.createProducer(queue); TextMessage message = producersession.createTextMessage("Hello world!"); - message.setJMSType("Hello"); - message.setStringProperty("hello","true"); - messageProducer.send(message); - /* - MapMessage mapmessage = producersession.createMapMessage(); - mapmessage.setBoolean("mybool", true); - mapmessage.setString("mystring", "hello"); - mapmessage.setLong("mylong", -25L); - - - messageProducer.send(mapmessage); - - BytesMessage bytesMessage = producersession.createBytesMessage(); - bytesMessage.writeUTF("This is a bytes message"); - messageProducer.send(bytesMessage); - - ObjectMessage objectMessage = producersession.createObjectMessage(); - objectMessage.setObject(new Double("3.14159265358979323846264338327950288")); - - messageProducer.send(objectMessage); + messageProducer.send(message); -/* StreamMessage streamMessage = producersession.createStreamMessage(); - streamMessage.writeBoolean(true); - streamMessage.writeLong(18031974L); - streamMessage.writeString("this is a stream Message"); - streamMessage.writeChar('\u00A3'); // POUND SIGN character - messageProducer.send(streamMessage); -*/ - Thread.sleep(50000L); + int delay = 5; + if(!latch.await(delay, TimeUnit.SECONDS)) + { + System.out.println("Waited " + delay + "sec but no message recieved."); + } connection.close(); context.close(); diff --git a/qpid/java/pom.xml b/qpid/java/pom.xml index 7ce629dc15..1be2ce0f95 100644 --- a/qpid/java/pom.xml +++ b/qpid/java/pom.xml @@ -77,6 +77,7 @@ amqp-1-0-common amqp-1-0-client amqp-1-0-client-jms + amqp-1-0-client-jms/example amqp-1-0-client-websocket broker-codegen broker-core -- cgit v1.2.1