[jboss-cvs] JBoss Messaging SVN: r6263 - in trunk/examples/jms/topic-selector: src/org/jboss/jms/example and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Apr 1 15:11:17 EDT 2009


Author: clebert.suconic at jboss.com
Date: 2009-04-01 15:11:17 -0400 (Wed, 01 Apr 2009)
New Revision: 6263

Modified:
   trunk/examples/jms/topic-selector/readme.html
   trunk/examples/jms/topic-selector/src/org/jboss/jms/example/TopicSelector.java
Log:
Updating TopicSelector example

Modified: trunk/examples/jms/topic-selector/readme.html
===================================================================
--- trunk/examples/jms/topic-selector/readme.html	2009-04-01 14:52:43 UTC (rev 6262)
+++ trunk/examples/jms/topic-selector/readme.html	2009-04-01 19:11:17 UTC (rev 6263)
@@ -7,8 +7,9 @@
      <h1>JMS Topic Example</h1>
      <br>
      <p>This example shows you how to send message to a JMS Topic, and subscribe them using selectors with JBoss Messaging.</p>
+     <p>The test will send 20 messages where 10 will have the message property someID set to 1 and the other 10 will have it set to 2.</p> 
+     <p>The test is also creating 3 non durable subscribers. 2 subscriptions using selectors, and a third one that should receive the complete set of messages.</p>
      <p>Topics and selectors are a standard part of JMS, please consult the JMS 1.1 specification for full details.</p>
-     <p>A Topic is used to send messages using the publish-subscribe model, from a producer to 1 or more consumers.</p>
      <br>
      <h2>Example step-by-step</h2>
      <p><i>To run the example, simply type <code>ant</code> from this directory</i></p>
@@ -44,51 +45,88 @@
           <code>MessageProducer messageProducer = session.createProducer(topic);</code>
         </pre>
        
-        <li>Create one subscriber with a specific filter</li>
+        <li>Create one non-durable subscriber with a specific filter</li>
         <pre>
-         <code>TopicSubscriber subscriberA = session.createDurableSubscriber(topic, "sub-a1", "userId=1", false);</code>
+         <code>MessageConsumer messageConsumer1 = session.createConsumer(topic, "someID=1", false);</code>
         </pre>
         
-        <li>Create another subscriber</li>
+        <li>Create a second non-durable subscriber with a specific filter</li>
         <pre>
-         <code>TopicSubscriber subscriberB = session.createDurableSubscriber(topic, "sub-a2", "userId=2", false);</code>
+         <code>MessageConsumer messageConsumer2 = session.createConsumer(topic, "someID=2", false);</code>
         </pre>
-
-        <li>Start the JMS Connections. This step will activate the subscribers to receive messages</li>
+        
+        <li>Create a third non-durable subscriber without any filters, and it should receive the complete set of messages</li>
         <pre>
-         <code>connection.start();</code>
+         <code>MessageConsumer messageConsumer3 = session.createConsumer(topic, "someID=2", false);</code>
         </pre>
 
-        <li>Send two messages </li>
-        <pre>
-<code>         for (int i = 1; i <= 2; i++)
+        <li>Send 20 messages, 10 with someID=1, 10 with someID=2 </li>
+        <pre><code>
+         for (int i = 1; i < 10; i++)
          {
-            // Create a text message
-            TextMessage message1 = session.createTextMessage("This is a text message " + i);
-            
-            // Set a property
-            message1.setIntProperty("userId", i);
-   
-            // Send the message
-            messageProducer.send(message1);
-         }</code>
-        </pre>
+            for (int someID = 1; someID <= 2; someID++)
+            {
+               TextMessage message1 = session.createTextMessage("This is a text message " + i +
+                                                                " sent for someID=" +
+                                                                someID);
 
+               message1.setIntProperty("someID", someID);
+
+               producer.send(message1);
+
+               System.out.println("Sent message: " + message1.getText());
+            }
+         }</code></pre>
+
         <li>We start the connection. In order for delivery to occur on any consumers or subscribers on a connection, the connection must be started</li>
-        <pre>
-           <code>connection.start();</code>
+        <pre>           <code>connection.start();</code>
         </pre>
 
 
-        <li>Receive the messages on subscription a and b</li>
-        <pre>
-           <code>TextMessage messageReceivedA = (TextMessage)subscriberA.receive();</code>
-           <code>System.out.println(messageReceivedA.getText());</code>
-           <code>TextMessage messageReceivedB = (TextMessage)subscriberB.receive();</code>
-           <code>System.out.println(messageReceivedB.getText());</code>
-        </pre>
+        <li>Consume the messages from MessageConsumer1, filtering out someID=2</li>
+        <pre><code>
+         for (;;)
+         {
+            TextMessage messageReceivedA = (TextMessage)messageConsumer1.receive(1000);
+            if (messageReceivedA == null)
+            {
+               break;
+            }
+
+            System.out.println("messageConsumer1 received " + messageReceivedA.getText() +
+                               " someID = " +
+                               messageReceivedA.getIntProperty("someID"));
+         }</code></pre>
            
+        <li>Consume the messages from MessageConsumer2, filtering out someID=1</li>
+        <pre><code>
+        for (;;)
+         {
+            TextMessage messageReceivedB = (TextMessage)messageConsumer2.receive(1000);
+            if (messageReceivedB == null)
+            {
+               break;
+            }
 
+            System.out.println("messageConsumer2 received " + messageReceivedB.getText() +
+                               " someID = " +
+                               messageReceivedB.getIntProperty("someID"));
+         }</code></pre>
+
+        <li>Consume the messages from MessageConsumer3, receiving the complete set of messages</li>
+        <pre><code>
+         for (;;)
+         {
+            TextMessage messageReceivedC = (TextMessage)messageConsumer3.receive(1000);
+            if (messageReceivedC == null)
+            {
+               break;
+            }
+            System.out.println("messageConsumer3 received " + messageReceivedC.getText() +
+                               " someID = " +
+                               messageReceivedC.getIntProperty("someID"));
+         }</code></pre>
+
         <li>Close the consumers</li>
         <pre><code>subscriberA.close();</code></pre>
         <pre><code>subscriberB.close();</code></pre>

Modified: trunk/examples/jms/topic-selector/src/org/jboss/jms/example/TopicSelector.java
===================================================================
--- trunk/examples/jms/topic-selector/src/org/jboss/jms/example/TopicSelector.java	2009-04-01 14:52:43 UTC (rev 6262)
+++ trunk/examples/jms/topic-selector/src/org/jboss/jms/example/TopicSelector.java	2009-04-01 19:11:17 UTC (rev 6263)
@@ -23,11 +23,11 @@
 
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
+import javax.jms.MessageConsumer;
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.jms.TextMessage;
 import javax.jms.Topic;
-import javax.jms.TopicSubscriber;
 import javax.naming.InitialContext;
 
 /**
@@ -41,10 +41,6 @@
    {
       new TopicSelector().run(args);
    }
-   
-   
-   
-   
 
    public void runExample() throws Exception
    {
@@ -63,60 +59,99 @@
 
          // Step 4. Create a JMS connection
          connection = cf.createConnection();
-         
+
          // Step 5. Create a JMS session
          Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
 
          // Step 6. Create a JMS message producer
-         MessageProducer messageProducer = session.createProducer(topic);
+         MessageProducer producer = session.createProducer(topic);
 
-         // Step 7. Create one consumer with a specific Filter
-         TopicSubscriber subscriberA = session.createDurableSubscriber(topic, "sub-a1", "userId=1", false);
+         // Step 7. Create one subscription with a specific Filter for someID=1
+         MessageConsumer messageConsumer1 = session.createConsumer(topic, "someID=1", false);
 
-         // Step 8. Create another consuemr with a different Filter
-         TopicSubscriber subscriberB = session.createDurableSubscriber(topic, "sub-a2", "userId=2", false);
+         // Step 8. Create another subscription with a specific Filter for someID=2
+         MessageConsumer messageConsumer2 = session.createConsumer(topic, "someID=2", false);
 
-         // Step 9. Send two messages
-         
-         for (int i = 1; i <= 2; i++)
+         // Step 9. Create another subscription with no filters, which will receive every message sent to the topic
+         MessageConsumer messageConsumer3 = session.createConsumer(topic);
+
+         // Step 10. Send 20 messages, 10 with someID=1, 10 with someID=2
+
+         for (int i = 1; i < 10; i++)
          {
-            // Step 9.1 Create a text message
-            TextMessage message1 = session.createTextMessage("This is a text message " + i);
-            
-            // Step 9.1 Set a property
-            message1.setIntProperty("userId", i);
-   
-            // Step 9.2 Send the message
-            messageProducer.send(message1);
+            for (int someID = 1; someID <= 2; someID++)
+            {
+               // Step 10.1 Create a text message
+               TextMessage message1 = session.createTextMessage("This is a text message " + i +
+                                                                " sent for someID=" +
+                                                                someID);
 
-            System.out.println("Sent message: " + message1.getText());
+               // Step 10.1 Set a property
+               message1.setIntProperty("someID", someID);
+
+               // Step 10.2 Send the message
+               producer.send(message1);
+
+               System.out.println("Sent message: " + message1.getText());
+            }
          }
 
-         // Step 10. Start the JMS Connection. This step will activate the subscribers to receive messages.
+         // Step 11. Start the JMS Connection. This step will activate the subscribers to receive messages.
          connection.start();
 
+         // Step 12. Consume the messages from MessageConsumer1, filtering out someID=2
 
-         // Step 11. Consume the message from the durable subscription a
+         System.out.println("*************************************************************");
+         System.out.println("MessageConsumer1 will only receive messages where someID=1:");
+         for (;;)
+         {
+            TextMessage messageReceivedA = (TextMessage)messageConsumer1.receive(1000);
+            if (messageReceivedA == null)
+            {
+               break;
+            }
 
-         TextMessage messageReceivedA = (TextMessage)subscriberA.receive();
+            System.out.println("messageConsumer1 received " + messageReceivedA.getText() +
+                               " someID = " +
+                               messageReceivedA.getIntProperty("someID"));
+         }
 
-         System.out.println("Received message: " + messageReceivedA.getText());
+         // Step 13. Consume the messages from MessageConsumer2, filtering out someID=2
+         System.out.println("*************************************************************");
+         System.out.println("MessageConsumer2 will only receive messages where someID=2:");
+         for (;;)
+         {
+            TextMessage messageReceivedB = (TextMessage)messageConsumer2.receive(1000);
+            if (messageReceivedB == null)
+            {
+               break;
+            }
 
+            System.out.println("messageConsumer2 received " + messageReceivedB.getText() +
+                               " someID = " +
+                               messageReceivedB.getIntProperty("someID"));
+         }
 
-         // Step 12. Consume the message from the durable subscription b
+         // Step 14. Consume the messages from MessageConsumer3, receiving the complete set of messages
+         System.out.println("*************************************************************");
+         System.out.println("MessageConsumer3 will receive every message:");
+         for (;;)
+         {
+            TextMessage messageReceivedC = (TextMessage)messageConsumer3.receive(1000);
+            if (messageReceivedC == null)
+            {
+               break;
+            }
+            System.out.println("messageConsumer3 received " + messageReceivedC.getText() +
+                               " someID = " +
+                               messageReceivedC.getIntProperty("someID"));
+         }
 
-         TextMessage messageReceivedB = (TextMessage)subscriberB.receive();
+         // Step 15. Close the subscribers
+         messageConsumer1.close();
+         messageConsumer2.close();
+         messageConsumer3.close();
 
-         System.out.println("Received message: " + messageReceivedB.getText());
-
-         
-         // Step 13. Close the subscribers
-         subscriberA.close();
-         subscriberA.close();
-
-         // Step 14. Delete the durable subscription
-         session.unsubscribe("sub-a1");
-         session.unsubscribe("sub-a2");
       }
       finally
       {




More information about the jboss-cvs-commits mailing list