[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