activemq-artemis/examples/jms/clustered-standalone
jbertram a102983d7a ACTIVEMQ6-51 Example server bootstrapping 2014-12-10 09:49:13 -06:00
..
src/main ACTIVEMQ6-51 Example server bootstrapping 2014-12-10 09:49:13 -06:00
pom.xml ACTIVEMQ6-51 Example server bootstrapping 2014-12-10 09:49:13 -06:00
readme.html Remove references of hornetq 2014-11-20 13:00:37 +00:00

readme.html

<html>
  <head>
    <title>JMS Clustered Stand-alone Example</title>
    <link rel="stylesheet" type="text/css" href="../common/common.css" />
    <link rel="stylesheet" type="text/css" href="../common/prettify.css" />
    <script type="text/javascript" src="../common/prettify.js"></script>
  </head>
  <body onload="prettyPrint()">
     <h1>JMS Clustered Stand-alone Example</h1>

     <p>This example demonstrates a JMS Topic deployed on three different nodes.
         The three nodes are configured to form a cluster.</p>
     <p>Subscribers for the topic are created on each node, and a producer is created on only one of the nodes.</p>
     <p>Some messages are sent by the producer, and we verify that <strong>all</strong> subscribers receive all the
     sent messages.</p>
     <p>This example uses ActiveMQ's default stand-alone clustered configuration.
        The relevant snippet from the server configuration, which tells the servers to form a cluster between the three nodes
     and to load balance the messages between the nodes is:</p>     
     <pre class="prettyprint">
     <code>&lt;cluster-connection name="my-cluster"&gt;
        &lt;address&gt;jms&lt;/address&gt;
        &lt;discovery-group-ref discovery-group-name="dg-group1"/&gt;
     &lt;/cluster-connection&gt;
     </code>
     </pre>    
     <h2>Example step-by-step</h2>
     <p><i>To run the example, simply type <code>mvn verify</code> from this directory</i>. This will
        automatically start the 3 cluster nodes, each with its specific configuration.</p>
     <p>To start the tests <em>manually</em>, the following steps are:</p>
     <ul>
        <li>create 4 terminals (3 for the servers and 1 for the example client)</li>
        <li>in the first terminal, go to the <code>bin</code> directory and start the first server (with default configuration):
           <pre class="prettyprint"><code>./run.sh ../config/stand-alone/clustered</code></pre>
        <li>in the second terminal, start the second server:
           <pre class="prettyprint"><code>export CLUSTER_PROPS="-Ddata.dir=../data-server2 -Djnp.port=2099 -Djnp.rmiPort=2098 -Dactivemq.remoting.netty.port=6445 -Dactivemq.remoting.netty.batch.port=6455"
./run.sh ../config/stand-alone/clustered</code></pre>
        <li>in the third terminal, start the third server (with default configuration):
           <pre class="prettyprint"><code>export CLUSTER_PROPS="-Ddata.dir=../data-server3 -Djnp.port=3099 -Djnp.rmiPort=3098 -Dactivemq.remoting.netty.port=7445 -Dactivemq.remoting.netty.batch.port=7455"
./run.sh ../config/stand-alone/clustered</code></pre>
        <li>finally, in the fourth terminal, start the example
           <pre class="prettyprint"><code>./build.sh runRemote</code> (or <code>build.bat runRemote</code> on windows)</pre>
     <p>The example connects to the three cluster nodes using JNDI (which are retrieved from 
        <a href="server0/client-jndi.properties">server0</a>, <a href="server1/client-jndi.properties">server1</a>, and
        <a href="server2/client-jndi.properties">server2</a>' s JNDI properties file). The JNDI ports were specified
        using the environment property <code>jnp.port</code> (or 1098 by default) when starting the 3 cluster nodes.</p>
     
     <p>For a description of the example code, please read the <a href="../clustered-topic/readme.html">
        clustered-topic example</a> which is very similar (it has 2 nodes while this example has 3 nodes).

  </body>
</html>