[hornetq-commits] JBoss hornetq SVN: r8444 - in trunk/examples/jms: symmetric-cluster and 7 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Nov 28 04:56:30 EST 2009
Author: ataylor
Date: 2009-11-28 04:56:30 -0500 (Sat, 28 Nov 2009)
New Revision: 8444
Removed:
trunk/examples/jms/automatic-failover/
trunk/examples/jms/symmetric-cluster/server1/KILL_ME
Modified:
trunk/examples/jms/symmetric-cluster/build.xml
trunk/examples/jms/symmetric-cluster/readme.html
trunk/examples/jms/symmetric-cluster/server0/hornetq-configuration.xml
trunk/examples/jms/symmetric-cluster/server1/hornetq-configuration.xml
trunk/examples/jms/symmetric-cluster/server2/hornetq-configuration.xml
trunk/examples/jms/symmetric-cluster/server3/hornetq-configuration.xml
trunk/examples/jms/symmetric-cluster/server4/hornetq-configuration.xml
trunk/examples/jms/symmetric-cluster/server5/hornetq-configuration.xml
trunk/examples/jms/symmetric-cluster/src/org/hornetq/jms/example/SymmetricClusterExample.java
Log:
updated examples
Modified: trunk/examples/jms/symmetric-cluster/build.xml
===================================================================
--- trunk/examples/jms/symmetric-cluster/build.xml 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/build.xml 2009-11-28 09:56:30 UTC (rev 8444)
@@ -18,27 +18,22 @@
<import file="../../common/build.xml"/>
<property file="ant.properties"/>
- <target name="run" depends="delete-files">
+ <target name="run">
<antcall target="runExample">
<param name="example.classname" value="org.hornetq.jms.example.SymmetricClusterExample"/>
- <param name="hornetq.example.beans.file" value="server3 server4 server5 server0 server1 server2"/>
+ <param name="hornetq.example.beans.file" value="server0 server1 server2 server3 server4 server5"/>
<param name="java-min-memory" value="50M"/>
<param name="java-max-memory" value="100M"/>
</antcall>
</target>
- <target name="runRemote" depends="delete-files">
+ <target name="runRemote">
<antcall target="runExample">
<param name="example.classname" value="org.hornetq.jms.example.SymmetricClusterExample"/>
<param name="hornetq.example.runServer" value="false"/>
</antcall>
</target>
-
- <target name="delete-files" depends="clean">
- <delete file="./server0/KILL_ME"/>
- <delete file="./server1/KILL_ME"/>
- <delete file="./server2/KILL_ME"/>
- </target>
+
</project>
Modified: trunk/examples/jms/symmetric-cluster/readme.html
===================================================================
--- trunk/examples/jms/symmetric-cluster/readme.html 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/readme.html 2009-11-28 09:56:30 UTC (rev 8444)
@@ -40,16 +40,12 @@
</cluster-connection>
</code>
</pre>
- <p>In this example we create a symmetric cluster of three live nodes, and we also pair each live node
+ <p>In this example we create a symmetric cluster of six live nodes, and we also pair each live node
with it's own backup node. (A backup node is not strictly necessary for a symmetric cluster).</p>
- <p>By providing each node with a backup, we ensure that, in case of failure, the cluster will continue
- without failure, with all connections on live failing over transparently onto the backup.</p>
- <p>In this example will we will demonstrate this by deploying a JMS topic and Queue on all nodes of the cluster
+ <p>In this example will we will demonstrate this by deploying a JMS topic and Queue on all nodes of the cluster
, sending messages to the queue and topic from different nodes, and verifying messages are received correctly
by consumers on different nodes.</p>
- <p>During the example will will also kill each live server in turn, at different times, and verify that the sending
- consuming of messages carries on uninterrupted, as connections transparently fail over from live to backup.</p>
- <p>For more information on configuring HornetQ clustering in general, please see the clustering
+ <p>For more information on configuring HornetQ clustering in general, please see the clustering
section of the user manual.</p>
<h2>Example step-by-step</h2>
<p><i>To run the example, simply type <code>./build.sh</code> (or <code>build.bat</code> on windows) from this directory</i></p>
@@ -79,43 +75,67 @@
</code>
</pre>
- <li>We create three connections, they should be to different nodes of the cluster in a round-robin fashion
+ <li>We create six connections, they should be to different nodes of the cluster in a round-robin fashion
and start them.</li>
<pre class="prettyprint">
<code>
connection0 = cf.createConnection();
-
- connection1 = cf.createConnection();
-
- connection2 = cf.createConnection();
-
- connection0.start();
-
- connection1.start();
-
- connection2.start();
+
+ connection1 = cf.createConnection();
+
+ connection2 = cf.createConnection();
+
+ connection3 = cf.createConnection();
+
+ connection4 = cf.createConnection();
+
+ connection5 = cf.createConnection();
+
+ connection0.start();
+
+ connection1.start();
+
+ connection2.start();
+
+ connection3.start();
+
+ connection4.start();
+
+ connection5.start();
</code>
</pre>
<li>We create a session on each connection.</li>
<pre class="prettyprint">
<code>
- Session session0 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- Session session2 = connection2.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Session session0 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session2 = connection2.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session3 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session4 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session5 = connection2.createSession(false, Session.AUTO_ACKNOWLEDGE);
</code>
</pre>
<li>We create a topic subscriber on each server.</li>
<pre class="prettyprint">
<code>
- MessageConsumer subscriber0 = session0.createConsumer(topic);
-
- MessageConsumer subscriber1 = session1.createConsumer(topic);
-
- MessageConsumer subscriber2 = session2.createConsumer(topic);
+ MessageConsumer subscriber0 = session0.createConsumer(topic);
+
+ MessageConsumer subscriber1 = session1.createConsumer(topic);
+
+ MessageConsumer subscriber2 = session2.createConsumer(topic);
+
+ MessageConsumer subscriber3 = session3.createConsumer(topic);
+
+ MessageConsumer subscriber4 = session4.createConsumer(topic);
+
+ MessageConsumer subscriber5 = session5.createConsumer(topic);
</code>
</pre>
@@ -149,123 +169,63 @@
producer2.send(queue, message2);
}
</code>
- </pre>
-
- <li>We kill live server 1, this will cause connection1 to transparently fail over onto server 4.</li>
+ </pre>
+ <li>Verify all subscribers and consumer receive the messages.</li>
<pre class="prettyprint">
<code>
- killServer(1);
- </code>
- </pre>
-
- <li>Verify all subscribers receive the messages.</li>
- <pre class="prettyprint">
- <code>
for (int i = 0; i < numMessages; i++)
- {
- TextMessage received0 = (TextMessage)subscriber0.receive(5000);
-
- if (received0 == null)
- {
- return false;
- }
-
- TextMessage received1 = (TextMessage)subscriber1.receive(5000);
-
- if (received1 == null)
- {
- return false;
- }
-
- TextMessage received2 = (TextMessage)subscriber2.receive(5000);
-
- if (received2 == null)
- {
- return false;
- }
-
- TextMessage received3 = (TextMessage)consumer0.receive(5000);
-
- if (received3 == null)
- {
- return false;
- }
- }
- </code>
- </pre>
+ {
+ TextMessage received0 = (TextMessage)subscriber0.receive(5000);
- <li>Send 500 more messages to the queue and topic.</li>
- <pre class="prettyprint">
- <code>
- for (int i = 0; i < numMessages; i++)
- {
- </code>
- </pre>
+ if (received0 == null)
+ {
+ return false;
+ }
- <li>Half way through sending we kill server 2</li>
- <pre class="prettyprint">
- <code>
- if (i == numMessages / 2)
- {
- killServer(2);
- }
-
- TextMessage message3 = session2.createTextMessage("Topic message 2");
-
- producer2.send(topic, message3);
-
- TextMessage message4 = session2.createTextMessage("Queue message 2");
-
- producer2.send(queue, message4);
- }
- </pre>
+ TextMessage received1 = (TextMessage)subscriber1.receive(5000);
- <li>Verify all the messages are received by the subscribers.</li>
- <pre class="prettyprint">
- <code>
- for (int i = 0; i < numMessages; i++)
- {
+ if (received1 == null)
+ {
+ return false;
+ }
+
+ TextMessage received2 = (TextMessage)subscriber2.receive(5000);
+
+ if (received2 == null)
+ {
+ return false;
+ }
+
+ TextMessage received3 = (TextMessage)subscriber3.receive(5000);
+
+ if (received3 == null)
+ {
+ return false;
+ }
+
+ TextMessage received4 = (TextMessage)subscriber4.receive(5000);
+
+ if (received4 == null)
+ {
+ return false;
+ }
+
+ TextMessage received5 = (TextMessage)subscriber5.receive(5000);
+
+ if (received5 == null)
+ {
+ return false;
+ }
+
+ TextMessage received6 = (TextMessage)consumer0.receive(5000);
+
+ if (received6 == null)
+ {
+ return false;
+ }
+ }
</code>
</pre>
-
- <li>Half way through receiving, we kill server 0.</li>
- <pre class="prettyprint">
- <code>
- if (i == numMessages / 2)
- {
- killServer(0);
- }
-
- TextMessage received0 = (TextMessage)subscriber0.receive(5000);
-
- if (received0 == null)
- {
- return false;
- }
-
- TextMessage received1 = (TextMessage)subscriber1.receive(5000);
-
- if (received1 == null)
- {
- return false;
- }
-
- TextMessage received2 = (TextMessage)subscriber2.receive(5000);
-
- if (received2 == null)
- {
- return false;
- }
-
- TextMessage received3 = (TextMessage)consumer0.receive(5000);
-
- if (received3 == null)
- {
- return false;
- }
- }
- </code>
- </pre>
<li>Be sure to close our resources!</li>
Modified: trunk/examples/jms/symmetric-cluster/server0/hornetq-configuration.xml
===================================================================
--- trunk/examples/jms/symmetric-cluster/server0/hornetq-configuration.xml 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/server0/hornetq-configuration.xml 2009-11-28 09:56:30 UTC (rev 8444)
@@ -3,9 +3,8 @@
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<clustered>true</clustered>
-
- <backup-connector-ref connector-name="backup-connector"/>
+
<!-- Connectors -->
<connectors>
@@ -14,10 +13,6 @@
<param key="port" value="5445"/>
</connector>
- <connector name="backup-connector">
- <factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory</factory-class>
- <param key="port" value="5448"/>
- </connector>
</connectors>
<!-- Acceptors -->
@@ -34,7 +29,7 @@
<group-address>231.7.7.7</group-address>
<group-port>9876</group-port>
<broadcast-period>100</broadcast-period>
- <connector-ref connector-name="netty-connector" backup-connector-name="backup-connector"/>
+ <connector-ref connector-name="netty-connector"/>
</broadcast-group>
</broadcast-groups>
Deleted: trunk/examples/jms/symmetric-cluster/server1/KILL_ME
===================================================================
Modified: trunk/examples/jms/symmetric-cluster/server1/hornetq-configuration.xml
===================================================================
--- trunk/examples/jms/symmetric-cluster/server1/hornetq-configuration.xml 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/server1/hornetq-configuration.xml 2009-11-28 09:56:30 UTC (rev 8444)
@@ -3,8 +3,6 @@
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<clustered>true</clustered>
-
- <backup-connector-ref connector-name="backup-connector"/>
<!-- Connectors -->
@@ -13,11 +11,6 @@
<factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory</factory-class>
<param key="port" value="5446"/>
</connector>
-
- <connector name="backup-connector">
- <factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory</factory-class>
- <param key="port" value="5449"/>
- </connector>
</connectors>
<!-- Acceptors -->
@@ -34,7 +27,7 @@
<group-address>231.7.7.7</group-address>
<group-port>9876</group-port>
<broadcast-period>100</broadcast-period>
- <connector-ref connector-name="netty-connector" backup-connector-name="backup-connector"/>
+ <connector-ref connector-name="netty-connector" />
</broadcast-group>
</broadcast-groups>
Modified: trunk/examples/jms/symmetric-cluster/server2/hornetq-configuration.xml
===================================================================
--- trunk/examples/jms/symmetric-cluster/server2/hornetq-configuration.xml 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/server2/hornetq-configuration.xml 2009-11-28 09:56:30 UTC (rev 8444)
@@ -3,8 +3,6 @@
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<clustered>true</clustered>
-
- <backup-connector-ref connector-name="backup-connector"/>
<!-- Connectors -->
@@ -13,11 +11,6 @@
<factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory</factory-class>
<param key="port" value="5447"/>
</connector>
-
- <connector name="backup-connector">
- <factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory</factory-class>
- <param key="port" value="5450"/>
- </connector>
</connectors>
<!-- Acceptors -->
@@ -34,7 +27,7 @@
<group-address>231.7.7.7</group-address>
<group-port>9876</group-port>
<broadcast-period>100</broadcast-period>
- <connector-ref connector-name="netty-connector" backup-connector-name="backup-connector"/>
+ <connector-ref connector-name="netty-connector"/>
</broadcast-group>
</broadcast-groups>
Modified: trunk/examples/jms/symmetric-cluster/server3/hornetq-configuration.xml
===================================================================
--- trunk/examples/jms/symmetric-cluster/server3/hornetq-configuration.xml 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/server3/hornetq-configuration.xml 2009-11-28 09:56:30 UTC (rev 8444)
@@ -3,8 +3,6 @@
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<clustered>true</clustered>
-
- <backup>true</backup>
<!-- Connectors -->
Modified: trunk/examples/jms/symmetric-cluster/server4/hornetq-configuration.xml
===================================================================
--- trunk/examples/jms/symmetric-cluster/server4/hornetq-configuration.xml 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/server4/hornetq-configuration.xml 2009-11-28 09:56:30 UTC (rev 8444)
@@ -3,8 +3,6 @@
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<clustered>true</clustered>
-
- <backup>true</backup>
<!-- Connectors -->
<connectors>
Modified: trunk/examples/jms/symmetric-cluster/server5/hornetq-configuration.xml
===================================================================
--- trunk/examples/jms/symmetric-cluster/server5/hornetq-configuration.xml 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/server5/hornetq-configuration.xml 2009-11-28 09:56:30 UTC (rev 8444)
@@ -3,8 +3,6 @@
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<clustered>true</clustered>
-
- <backup>true</backup>
<!-- Connectors -->
<connectors>
Modified: trunk/examples/jms/symmetric-cluster/src/org/hornetq/jms/example/SymmetricClusterExample.java
===================================================================
--- trunk/examples/jms/symmetric-cluster/src/org/hornetq/jms/example/SymmetricClusterExample.java 2009-11-28 09:52:53 UTC (rev 8443)
+++ trunk/examples/jms/symmetric-cluster/src/org/hornetq/jms/example/SymmetricClusterExample.java 2009-11-28 09:56:30 UTC (rev 8444)
@@ -12,14 +12,7 @@
*/
package org.hornetq.jms.example;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
+import javax.jms.*;
import org.hornetq.common.example.HornetQExample;
import org.hornetq.jms.HornetQQueue;
@@ -63,6 +56,12 @@
Connection connection1 = null;
Connection connection2 = null;
+
+ Connection connection3 = null;
+
+ Connection connection4 = null;
+
+ Connection connection5 = null;
try
{
@@ -83,19 +82,31 @@
Topic topic = new HornetQTopic("exampleTopic");
- // Step 3. We create three connections, they should be to different nodes of the cluster in a round-robin fashion
+ // Step 3. We create six connections, they should be to different nodes of the cluster in a round-robin fashion
// and start them
connection0 = cf.createConnection();
-
+
connection1 = cf.createConnection();
connection2 = cf.createConnection();
+
+ connection3 = cf.createConnection();
+
+ connection4 = cf.createConnection();
+
+ connection5 = cf.createConnection();
connection0.start();
connection1.start();
connection2.start();
+
+ connection3.start();
+
+ connection4.start();
+
+ connection5.start();
// Step 4. We create a session on each connection
@@ -104,6 +115,12 @@
Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE);
Session session2 = connection2.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session3 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session4 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ Session session5 = connection2.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Step 5. We create a topic subscriber on each server
@@ -112,14 +129,17 @@
MessageConsumer subscriber1 = session1.createConsumer(topic);
MessageConsumer subscriber2 = session2.createConsumer(topic);
+
+ MessageConsumer subscriber3 = session3.createConsumer(topic);
+
+ MessageConsumer subscriber4 = session4.createConsumer(topic);
+
+ MessageConsumer subscriber5 = session5.createConsumer(topic);
// Step 6. We create a queue consumer on server 0
MessageConsumer consumer0 = session0.createConsumer(queue);
- // Give a little time for consumers to propagate throughout cluster
- Thread.sleep(2000);
-
// Step 7. We create an anonymous message producer on just one server 2
MessageProducer producer2 = session2.createProducer(null);
@@ -130,23 +150,17 @@
for (int i = 0; i < numMessages; i++)
{
- TextMessage message1 = session2.createTextMessage("Topic message 1");
+ TextMessage message1 = session2.createTextMessage("Topic message " + i);
producer2.send(topic, message1);
- TextMessage message2 = session2.createTextMessage("Queue message 1");
+ TextMessage message2 = session2.createTextMessage("Queue message " + i);
producer2.send(queue, message2);
}
- // Step 9. We kill live server 1, this will cause connection1 to transparently fail over onto server 4
+ // Step 9. Verify all subscribers and the consumer receive the messages
- killServer(1);
-
- Thread.sleep(500);
-
- // Step 9. Verify all subscribers receive the messages
-
for (int i = 0; i < numMessages; i++)
{
TextMessage received0 = (TextMessage)subscriber0.receive(5000);
@@ -169,73 +183,33 @@
{
return false;
}
-
- TextMessage received3 = (TextMessage)consumer0.receive(5000);
-
+
+ TextMessage received3 = (TextMessage)subscriber3.receive(5000);
+
if (received3 == null)
{
return false;
- }
- }
-
- // Step 10. Send 500 more messages to the queue and topic
-
- for (int i = 0; i < numMessages; i++)
- {
- // Step 11. Half way through sending we kill server 2
-
- if (i == numMessages / 2)
- {
- killServer(2);
}
-
- TextMessage message3 = session2.createTextMessage("Topic message 2");
-
- producer2.send(topic, message3);
-
- TextMessage message4 = session2.createTextMessage("Queue message 2");
-
- producer2.send(queue, message4);
- }
-
-
- //Step 11. Verify all the messages are received by the subscribers
-
- for (int i = 0; i < numMessages; i++)
- {
- // Step 12. Half way through receiving, we kill server 0
-
- if (i == numMessages / 2)
+
+ TextMessage received4 = (TextMessage)subscriber4.receive(5000);
+
+ if (received4 == null)
{
- killServer(0);
- }
-
- TextMessage received0 = (TextMessage)subscriber0.receive(5000);
-
- if (received0 == null)
- {
return false;
}
-
- TextMessage received1 = (TextMessage)subscriber1.receive(5000);
-
- if (received1 == null)
+
+ TextMessage received5 = (TextMessage)subscriber5.receive(5000);
+
+ if (received5 == null)
{
return false;
}
+
+ TextMessage received6 = (TextMessage)consumer0.receive(5000);
- TextMessage received2 = (TextMessage)subscriber2.receive(5000);
-
- if (received2 == null)
+ if (received6 == null)
{
return false;
- }
-
- TextMessage received3 = (TextMessage)consumer0.receive(5000);
-
- if (received3 == null)
- {
- return false;
}
}
More information about the hornetq-commits
mailing list