http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-durable-subscription/pom.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-durable-subscription/pom.xml b/examples/jms/clustered-durable-subscription/pom.xml deleted file mode 100644 index 5b678d2..0000000 --- a/examples/jms/clustered-durable-subscription/pom.xml +++ /dev/null @@ -1,167 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.activemq.examples.jms</groupId> - <artifactId>jms-examples</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <artifactId>clustered-durable-subscription</artifactId> - <packaging>jar</packaging> - <name>ActiveMQ Artemis JMS Clustered Durable Subscription Example</name> - - <properties> - <activemq.basedir>${project.basedir}/../../..</activemq.basedir> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.activemq</groupId> - <artifactId>artemis-jms-client</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - - <profiles> - <profile> - <!-- specify -PnoServer if you don't want to start the server --> - <id>noServer</id> - <properties> - <noServer>true</noServer> - </properties> - </profile> - </profiles> - <build> - <plugins> - <plugin> - <groupId>org.apache.activemq</groupId> - <artifactId>artemis-maven-plugin</artifactId> - <executions> - <execution> - <id>create0</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <clustered>true</clustered> - <instance>${basedir}/target/server0</instance> - <configuration>${basedir}/target/classes/activemq/server0</configuration> - </configuration> - </execution> - <execution> - <id>create1</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <clustered>true</clustered> - <instance>${basedir}/target/server1</instance> - <configuration>${basedir}/target/classes/activemq/server1</configuration> - <portOffset>1</portOffset> - </configuration> - </execution> - <execution> - <id>start0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server0</location> - <testURI>tcp://localhost:61616</testURI> - <args> - <param>run</param> - </args> - <name>server0</name> - </configuration> - </execution> - <execution> - <id>start1</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server1</location> - <testURI>tcp://localhost:61617</testURI> - <args> - <param>run</param> - </args> - <name>server1</name> - </configuration> - </execution> - <execution> - <id>runClient</id> - <goals> - <goal>runClient</goal> - </goals> - <configuration> - <clientClass>org.apache.activemq.artemis.jms.example.ClusteredDurableSubscriptionExample - </clientClass> - </configuration> - </execution> - <execution> - <id>stop0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <location>${basedir}/target/server0</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop1</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <location>${basedir}/target/server1</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.apache.activemq.examples.jms</groupId> - <artifactId>clustered-durable-subscription</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> - -</project>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-durable-subscription/readme.html ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-durable-subscription/readme.html b/examples/jms/clustered-durable-subscription/readme.html deleted file mode 100644 index 57597bd..0000000 --- a/examples/jms/clustered-durable-subscription/readme.html +++ /dev/null @@ -1,66 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<html> - <head> - <title>ActiveMQ Artemis JMS Durable Subscription 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 Durable Subscription Example</h1> - - <pre>To run the example, simply type <b>mvn verify</b> from this directory, <br>or <b>mvn -PnoServer verify</b> if you want to start and create the server manually.</pre> - - <p>This example demonstrates a clustered JMS durable subscription. - Normally durable subscriptions exist on a single node and can only have one subscriber at any one time, - however, with ActiveMQ Artemis it's possible to create durable subscription instances with the same name and client-id - on different nodes of the cluster, and consume from them simultaneously. - This allows the work of processing messages from a durable subscription to be spread across the cluster in - a similar way to how JMS Queues can be load balanced across the cluster - </p> - <p>In this example we first configure the two nodes to form a cluster, then we then create a durable subscriber - with the same name and client-id on both nodes, and we create a producer on only one of the nodes.</p> - <p>We then send some messages via the producer, and we verify that the messages are round robin'd between - the two subscription instances. Note that each durable subscription instance with the same name and client-id - <b>does not</b> receive its own copy of the messages. This is because the instances on different nodes form a - single "logical" durable subscription, in the same way multiple JMS Queue instances on different nodes - form a single "local" JMS Queue</p> - <p>This example uses JNDI to lookup the JMS Queue and ConnectionFactory objects. If you prefer not to use - JNDI, these could be instantiated directly. - <p>Here's the relevant snippet from the server configuration, which tells the server to form a cluster between the two nodes - and to load balance the messages between the nodes.</p> - <p>The cli create method will define this section by default if you use --clustered as a parameter</p> - <pre class="prettyprint"> - <code><cluster-connection name="my-cluster"> - <address>jms</address> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </code> - </pre> - <p>For more information on ActiveMQ Artemis load balancing, and clustering in general, please see the clustering - section of the user manual.</p> - - </body> -</html> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-durable-subscription/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredDurableSubscriptionExample.java ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-durable-subscription/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredDurableSubscriptionExample.java b/examples/jms/clustered-durable-subscription/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredDurableSubscriptionExample.java deleted file mode 100644 index f8803e1..0000000 --- a/examples/jms/clustered-durable-subscription/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredDurableSubscriptionExample.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.activemq.artemis.jms.example; - -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.naming.InitialContext; -import java.util.Hashtable; - -import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; - -/** - * A simple example that shows a JMS Durable Subscription across two nodes of a cluster. - * - * The same durable subscription can exist on more than one node of the cluster, and messages - * sent to the topic will be load-balanced in a round-robin fashion between the two nodes - */ -public class ClusteredDurableSubscriptionExample { - - public static void main(final String[] args) throws Exception { - Connection connection0 = null; - - Connection connection1 = null; - - try { - // Step 1. Instantiate the connection factory on server 0 - ConnectionFactory cf0 = new ActiveMQConnectionFactory("tcp://localhost:61616"); - - // Step 2. nstantiate the connection factory on server 1 - ConnectionFactory cf1 = new ActiveMQConnectionFactory("tcp://localhost:61617"); - - // Step 3. We create a JMS Connection connection0 which is a connection to server 0 - // and set the client-id - connection0 = cf0.createConnection(); - - final String clientID = "my-client-id"; - - connection0.setClientID(clientID); - - // Step 4. We create a JMS Connection connection1 which is a connection to server 1 - // and set the same client-id - connection1 = cf1.createConnection(); - - connection1.setClientID(clientID); - - // Step 5. We create a JMS Session on server 0 - Session session0 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 6. We create a JMS Session on server 1 - Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 7. We start the connections to ensure delivery occurs on them - connection0.start(); - - connection1.start(); - - // Step 8. We create JMS durable subscriptions with the same name and client-id on both nodes - // of the cluster - - final String subscriptionName = "my-subscription"; - - // Step 9. lookup the topic - Topic topic = session0.createTopic("exampleTopic"); - - MessageConsumer subscriber0 = session0.createDurableSubscriber(topic, subscriptionName); - - MessageConsumer subscriber1 = session1.createDurableSubscriber(topic, subscriptionName); - - Thread.sleep(1000); - - // Step 10. We create a JMS MessageProducer object on server 0 - MessageProducer producer = session0.createProducer(topic); - - // Step 11. We send some messages to server 0 - - final int numMessages = 10; - - for (int i = 0; i < numMessages; i++) { - TextMessage message = session0.createTextMessage("This is text message " + i); - - producer.send(message); - - System.out.println("Sent message: " + message.getText()); - } - - // Step 12. We now consume those messages on *both* server 0 and server 1. - // Note that the messages have been load-balanced between the two nodes, with some - // messages on node 0 and others on node 1. - // The "logical" subscription is distributed across the cluster and contains exactly one copy of all the - // messages - - for (int i = 0; i < numMessages; i += 2) { - TextMessage message0 = (TextMessage) subscriber0.receive(5000); - - System.out.println("Got message: " + message0.getText() + " from node 0"); - - TextMessage message1 = (TextMessage) subscriber1.receive(5000); - - System.out.println("Got message: " + message1.getText() + " from node 1"); - } - } - finally { - // Step 15. Be sure to close our JMS resources! - if (connection0 != null) { - connection0.close(); - } - - if (connection1 != null) { - connection1.close(); - } - } - } -} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server0/broker.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server0/broker.xml b/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server0/broker.xml deleted file mode 100644 index 2bfaeae..0000000 --- a/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server0/broker.xml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="urn:activemq" - xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> - - <jms xmlns="urn:activemq:jms"> - <!--the topic used by the example--> - <topic name="exampleTopic"/> - </jms> - - <core xmlns="urn:activemq:core"> - - <bindings-directory>./data/bindings</bindings-directory> - - <journal-directory>./data/journal</journal-directory> - - <large-messages-directory>./data/largemessages</large-messages-directory> - - <paging-directory>./data/paging</paging-directory> - - - <!-- Connectors --> - <connectors> - <connector name="netty-connector">tcp://localhost:61616</connector> - </connectors> - - <!-- Acceptors --> - <acceptors> - <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> - </acceptors> - - <!-- Clustering configuration --> - <broadcast-groups> - <broadcast-group name="my-broadcast-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <broadcast-period>100</broadcast-period> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <!-- other configuration --> - - <security-settings> - <!--security for example queue--> - <security-setting match="jms.topic.exampleTopic"> - <permission type="createDurableQueue" roles="guest"/> - <permission type="deleteDurableQueue" roles="guest"/> - <permission type="createNonDurableQueue" roles="guest"/> - <permission type="deleteNonDurableQueue" roles="guest"/> - <permission type="consume" roles="guest"/> - <permission type="send" roles="guest"/> - </security-setting> - </security-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server1/broker.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server1/broker.xml b/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server1/broker.xml deleted file mode 100644 index 8134f27..0000000 --- a/examples/jms/clustered-durable-subscription/src/main/resources/activemq/server1/broker.xml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="urn:activemq" - xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> - - <jms xmlns="urn:activemq:jms"> - <!--the topic used by the example--> - <topic name="exampleTopic"/> - </jms> - - <core xmlns="urn:activemq:core"> - - <bindings-directory>./data/bindings</bindings-directory> - - <journal-directory>./data/journal</journal-directory> - - <large-messages-directory>./data/largemessages</large-messages-directory> - - <paging-directory>./data/paging</paging-directory> - - <!-- Connectors --> - <connectors> - <connector name="netty-connector">tcp://localhost:61617</connector> - </connectors> - - <!-- Acceptors --> - <acceptors> - <acceptor name="netty-acceptor">tcp://localhost:61617</acceptor> - </acceptors> - - <!-- Clustering configuration --> - <broadcast-groups> - <broadcast-group name="my-broacast-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <broadcast-period>100</broadcast-period> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <!-- other configuration --> - - <security-settings> - <!--security for example queue--> - <security-setting match="jms.topic.exampleTopic"> - <permission type="createDurableQueue" roles="guest"/> - <permission type="deleteDurableQueue" roles="guest"/> - <permission type="createNonDurableQueue" roles="guest"/> - <permission type="deleteNonDurableQueue" roles="guest"/> - <permission type="consume" roles="guest"/> - <permission type="send" roles="guest"/> - </security-setting> - </security-settings> - - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-grouping/pom.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-grouping/pom.xml b/examples/jms/clustered-grouping/pom.xml deleted file mode 100644 index 86338f3..0000000 --- a/examples/jms/clustered-grouping/pom.xml +++ /dev/null @@ -1,203 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.activemq.examples.jms</groupId> - <artifactId>jms-examples</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <artifactId>clustered-grouping</artifactId> - <packaging>jar</packaging> - <name>ActiveMQ Artemis JMS CLustered Grouping Example</name> - - <properties> - <activemq.basedir>${project.basedir}/../../..</activemq.basedir> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.activemq</groupId> - <artifactId>artemis-jms-client</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - - <profiles> - <profile> - <!-- specify -PnoServer if you don't want to start the server --> - <id>noServer</id> - <properties> - <noServer>true</noServer> - </properties> - </profile> - </profiles> - <build> - <plugins> - <plugin> - <groupId>org.apache.activemq</groupId> - <artifactId>artemis-maven-plugin</artifactId> - <executions> - <execution> - <id>create0</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <instance>${basedir}/target/server0</instance> - <configuration>${basedir}/target/classes/activemq/server0</configuration> - </configuration> - </execution> - <execution> - <id>create1</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <instance>${basedir}/target/server1</instance> - <configuration>${basedir}/target/classes/activemq/server1</configuration> - </configuration> - </execution> - <execution> - <id>create2</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <instance>${basedir}/target/server2</instance> - <configuration>${basedir}/target/classes/activemq/server2</configuration> - </configuration> - </execution> - <execution> - <id>start0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server0</location> - <testURI>tcp://localhost:61616</testURI> - <args> - <param>run</param> - </args> - <name>server0</name> - </configuration> - </execution> - <execution> - <id>start1</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server1</location> - <testURI>tcp://localhost:61617</testURI> - <args> - <param>run</param> - </args> - <name>server1</name> - </configuration> - </execution> - <execution> - <id>start2</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server2</location> - <testURI>tcp://localhost:61618</testURI> - <args> - <param>run</param> - </args> - <name>server2</name> - </configuration> - </execution> - <execution> - <id>runClient</id> - <goals> - <goal>runClient</goal> - </goals> - <configuration> - <clientClass>org.apache.activemq.artemis.jms.example.ClusteredGroupingExample</clientClass> - </configuration> - </execution> - <execution> - <id>stop0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <location>${basedir}/target/server0</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop1</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <location>${basedir}/target/server1</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop2</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <location>${basedir}/target/server2</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.apache.activemq.examples.jms</groupId> - <artifactId>clustered-grouping</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> - -</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-grouping/readme.html ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-grouping/readme.html b/examples/jms/clustered-grouping/readme.html deleted file mode 100644 index c605168..0000000 --- a/examples/jms/clustered-grouping/readme.html +++ /dev/null @@ -1,81 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<html> - <head> - <title>ActiveMQ Artemis JMS Clustered Grouping Example</title> - <link rel="stylesheet" type="text/css" href="../common/common.css"> - </head> - <body> - <h1>JMS Clustered Grouping Example</h1> - - <pre>To run the example, simply type <b>mvn verify</b> from this directory, <br>or <b>mvn -PnoServer verify</b> if you want to start and create the server manually.</pre> - - <p>This example demonstrates how to ensure strict ordering across a cluster using clustered message grouping</p> - <p>We create 3 nodes each with a grouping message handler, one with a Local handler and 2 with a Remote handler.</p> - <p>The local handler acts as an arbitrator for the 2 remote handlers, holding the information on routes and communicating - the routing info with the remote handlers on the other 2 nodes</p> - <p>We then send some messages to each node with the same group id set and ensure the same consumer receives all of them</p> - <p>Here's the relevant snippet from the server configuration that has the local handler</p> - <pre> - <code> - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <grouping-handler name="my-grouping-handler"> - <type>LOCAL</type> - <address>jms</address> - <timeout>5000</timeout> - </grouping-handler> - </code> - </pre> - - <p>Here's the relevant snippet from the server configuration that has the remote handlers</p> - <pre> - <code> - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <grouping-handler name="my-grouping-handler"> - <type>REMOTE</type> - <address>jms</address> - <timeout>5000</timeout> - </grouping-handler> - </code> - </pre> - - </body> -</html> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-grouping/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredGroupingExample.java ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-grouping/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredGroupingExample.java b/examples/jms/clustered-grouping/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredGroupingExample.java deleted file mode 100644 index a64e33a..0000000 --- a/examples/jms/clustered-grouping/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredGroupingExample.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.activemq.artemis.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 org.apache.activemq.artemis.api.jms.ActiveMQJMSClient; -import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; -import org.apache.activemq.artemis.jms.client.ActiveMQQueue; - -/** - * A simple example that demonstrates server side load-balancing of messages between the queue instances on different - * nodes of the cluster. - */ -public class ClusteredGroupingExample { - - public static void main(String[] args) throws Exception { - Connection connection0 = null; - - Connection connection1 = null; - - Connection connection2 = null; - - try { - // Step 1. We will instantiate the queue object directly on this example - // This could be done through JNDI or JMSession.createQueue - Queue queue = ActiveMQJMSClient.createQueue("exampleQueue"); - - // Step 2. create a connection factory towards server 0. - ConnectionFactory cf0 = new ActiveMQConnectionFactory("tcp://localhost:61616"); - - // Step 3. create a connection factory towards server 1. - ConnectionFactory cf1 = new ActiveMQConnectionFactory("tcp://localhost:61617"); - - // Step 4. create a connection factory towards server 2. - ConnectionFactory cf2 = new ActiveMQConnectionFactory("tcp://localhost:61618"); - - // Step 5. We create a JMS Connection connection0 which is a connection to server 0 - connection0 = cf0.createConnection(); - - // Step 6. We create a JMS Connection connection1 which is a connection to server 1 - connection1 = cf1.createConnection(); - - // Step 7. We create a JMS Connection connection2 which is a connection to server 2 - connection2 = cf2.createConnection(); - - // Step 8. We create a JMS Session on server 0 - Session session0 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 9. We create a JMS Session on server 1 - Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 10. We create a JMS Session on server 2 - Session session2 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 11. We start the connections to ensure delivery occurs on them - connection0.start(); - - connection1.start(); - - connection2.start(); - - // Step 12. We create JMS MessageConsumer objects on server 0 - MessageConsumer consumer = session0.createConsumer(queue); - - // Step 13. We create a JMS MessageProducer object on server 0, 1 and 2 - MessageProducer producer0 = session0.createProducer(queue); - - MessageProducer producer1 = session1.createProducer(queue); - - MessageProducer producer2 = session2.createProducer(queue); - - // Step 14. We send some messages to server 0, 1 and 2 with the same groupid set - - final int numMessages = 10; - - for (int i = 0; i < numMessages; i++) { - TextMessage message = session0.createTextMessage("This is text message " + i); - - message.setStringProperty("JMSXGroupID", "Group-0"); - - producer0.send(message); - - System.out.println("Sent messages: " + message.getText() + " to node 0"); - } - - for (int i = 0; i < numMessages; i++) { - TextMessage message = session1.createTextMessage("This is text message " + (i + 10)); - - message.setStringProperty("JMSXGroupID", "Group-0"); - - producer1.send(message); - - System.out.println("Sent messages: " + message.getText() + " to node 1"); - - } - - for (int i = 0; i < numMessages; i++) { - TextMessage message = session2.createTextMessage("This is text message " + (i + 20)); - - message.setStringProperty("JMSXGroupID", "Group-0"); - - producer2.send(message); - - System.out.println("Sent messages: " + message.getText() + " to node 2"); - } - - // Step 15. We now consume those messages from server 0 - // We note the messages have all been sent to the same consumer on the same node - - for (int i = 0; i < numMessages * 3; i++) { - TextMessage message0 = (TextMessage) consumer.receive(5000); - - System.out.println("Got message: " + message0.getText() + " from node 0"); - - } - } - finally { - // Step 17. Be sure to close our resources! - - if (connection0 != null) { - connection0.close(); - } - - if (connection1 != null) { - connection1.close(); - } - - if (connection2 != null) { - connection2.close(); - } - } - } -} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-grouping/src/main/resources/activemq/server0/broker.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-grouping/src/main/resources/activemq/server0/broker.xml b/examples/jms/clustered-grouping/src/main/resources/activemq/server0/broker.xml deleted file mode 100644 index 4520059..0000000 --- a/examples/jms/clustered-grouping/src/main/resources/activemq/server0/broker.xml +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="urn:activemq" - xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> - - <jms xmlns="urn:activemq:jms"> - <!--the queue used by the example--> - <queue name="exampleQueue"/> - </jms> - - <core xmlns="urn:activemq:core"> - - <bindings-directory>./data/bindings</bindings-directory> - - <journal-directory>./data/journal</journal-directory> - - <large-messages-directory>./data/largemessages</large-messages-directory> - - <paging-directory>./data/paging</paging-directory> - - - <!-- Connectors --> - - <connectors> - <connector name="netty-connector">tcp://localhost:61616</connector> - </connectors> - - <!-- Acceptors --> - <acceptors> - <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> - </acceptors> - - <!-- Clustering configuration --> - <broadcast-groups> - <broadcast-group name="my-broadcast-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <broadcast-period>100</broadcast-period> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <grouping-handler name="my-grouping-handler"> - <type>LOCAL</type> - <address>jms</address> - <timeout>5000</timeout> - <group-timeout>-1</group-timeout> - <reaper-period>30000</reaper-period> - </grouping-handler> - - <!-- Other config --> - - <security-settings> - <!--security for example queue--> - <security-setting match="jms.queue.exampleQueue"> - <permission type="createDurableQueue" roles="guest"/> - <permission type="deleteDurableQueue" roles="guest"/> - <permission type="createNonDurableQueue" roles="guest"/> - <permission type="deleteNonDurableQueue" roles="guest"/> - <permission type="consume" roles="guest"/> - <permission type="send" roles="guest"/> - </security-setting> - </security-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-grouping/src/main/resources/activemq/server1/broker.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-grouping/src/main/resources/activemq/server1/broker.xml b/examples/jms/clustered-grouping/src/main/resources/activemq/server1/broker.xml deleted file mode 100644 index 4765f7a..0000000 --- a/examples/jms/clustered-grouping/src/main/resources/activemq/server1/broker.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="urn:activemq" - xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> - - <jms xmlns="urn:activemq:jms"> - <!--the queue used by the example--> - <queue name="exampleQueue"/> - </jms> - - <core xmlns="urn:activemq:core"> - - <bindings-directory>./data/bindings</bindings-directory> - - <journal-directory>./data/journal</journal-directory> - - <large-messages-directory>./data/largemessages</large-messages-directory> - - <paging-directory>./data/paging</paging-directory> - - - <!-- Connectors --> - <connectors> - <connector name="netty-connector">tcp://localhost:61617</connector> - </connectors> - - <!-- Acceptors --> - <acceptors> - <acceptor name="netty-acceptor">tcp://localhost:61617</acceptor> - </acceptors> - - <!-- Clustering configuration --> - <broadcast-groups> - <broadcast-group name="my-broadcast-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <broadcast-period>100</broadcast-period> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <grouping-handler name="my-grouping-handler"> - <type>REMOTE</type> - <address>jms</address> - <timeout>5000</timeout> - </grouping-handler> - - <!-- Other config --> - - <security-settings> - <!--security for example queue--> - <security-setting match="jms.queue.exampleQueue"> - <permission type="createDurableQueue" roles="guest"/> - <permission type="deleteDurableQueue" roles="guest"/> - <permission type="createNonDurableQueue" roles="guest"/> - <permission type="deleteNonDurableQueue" roles="guest"/> - <permission type="consume" roles="guest"/> - <permission type="send" roles="guest"/> - </security-setting> - </security-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-grouping/src/main/resources/activemq/server2/broker.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-grouping/src/main/resources/activemq/server2/broker.xml b/examples/jms/clustered-grouping/src/main/resources/activemq/server2/broker.xml deleted file mode 100644 index 16bf2eb..0000000 --- a/examples/jms/clustered-grouping/src/main/resources/activemq/server2/broker.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="urn:activemq" - xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> - - <jms xmlns="urn:activemq:jms"> - <!--the queue used by the example--> - <queue name="exampleQueue"/> - </jms> - - <core xmlns="urn:activemq:core"> - - <bindings-directory>./data/bindings</bindings-directory> - - <journal-directory>./data/journal</journal-directory> - - <large-messages-directory>./data/largemessages</large-messages-directory> - - <paging-directory>./data/paging</paging-directory> - - - <!-- Connectors --> - <connectors> - <connector name="netty-connector">tcp://localhost:61618</connector> - </connectors> - - <!-- Acceptors --> - <acceptors> - <acceptor name="netty-acceptor">tcp://localhost:61618</acceptor> - </acceptors> - - <!-- Clustering configuration --> - <broadcast-groups> - <broadcast-group name="my-broadcast-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <broadcast-period>100</broadcast-period> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <group-address>${udp-address:231.7.7.7}</group-address> - <group-port>9876</group-port> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <grouping-handler name="my-grouping-handler"> - <type>REMOTE</type> - <address>jms</address> - <timeout>5000</timeout> - </grouping-handler> - - <!-- Other config --> - - <security-settings> - <!--security for example queue--> - <security-setting match="jms.queue.exampleQueue"> - <permission type="createDurableQueue" roles="guest"/> - <permission type="deleteDurableQueue" roles="guest"/> - <permission type="createNonDurableQueue" roles="guest"/> - <permission type="deleteNonDurableQueue" roles="guest"/> - <permission type="consume" roles="guest"/> - <permission type="send" roles="guest"/> - </security-setting> - </security-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/pom.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/pom.xml b/examples/jms/clustered-jgroups/pom.xml deleted file mode 100644 index 9930edc..0000000 --- a/examples/jms/clustered-jgroups/pom.xml +++ /dev/null @@ -1,170 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.activemq.examples.jms</groupId> - <artifactId>jms-examples</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <artifactId>clustered-jgroups</artifactId> - <packaging>jar</packaging> - <name>ActiveMQ Artemis JMS Clustered JGroups Example</name> - - <properties> - <activemq.basedir>${project.basedir}/../../..</activemq.basedir> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.activemq</groupId> - <artifactId>artemis-jms-client</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - - <profiles> - <profile> - <!-- specify -PnoServer if you don't want to start the server --> - <id>noServer</id> - <properties> - <noServer>true</noServer> - </properties> - </profile> - </profiles> - <build> - <plugins> - <plugin> - <groupId>org.apache.activemq</groupId> - <artifactId>artemis-maven-plugin</artifactId> - <executions> - <execution> - <id>create</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <libList> - <!-- You need to add jgroups.jar to the server's lib --> - <arg>org.jgroups:jgroups:3.6.0.Final</arg> - </libList> - <ignore>${noServer}</ignore> - <instance>${basedir}/target/server0</instance> - <configuration>${basedir}/target/classes/activemq/server0</configuration> - </configuration> - </execution> - <execution> - <id>create1</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <libList> - <!-- You need to add jgroups.jar to the server's lib --> - <arg>org.jgroups:jgroups:3.6.0.Final</arg> - </libList> - <ignore>${noServer}</ignore> - <instance>${basedir}/target/server1</instance> - <configuration>${basedir}/target/classes/activemq/server1</configuration> - </configuration> - </execution> - <execution> - <id>start0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server0</location> - <testURI>tcp://localhost:61616</testURI> - <args> - <param>run</param> - </args> - <name>server0</name> - </configuration> - </execution> - <execution> - <id>start1</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server1</location> - <testURI>tcp://localhost:61617</testURI> - <args> - <param>run</param> - </args> - <name>server1</name> - </configuration> - </execution> - <execution> - <id>runClient</id> - <goals> - <goal>runClient</goal> - </goals> - <configuration> - <clientClass>org.apache.activemq.artemis.jms.example.ClusteredJgroupsExample</clientClass> - </configuration> - </execution> - <execution> - <id>stop0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noServer}</ignore> - <location>${basedir}/target/server0</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop1</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <location>${basedir}/target/server1</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.apache.activemq.examples.jms</groupId> - <artifactId>clustered-jgroups</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> - -</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/readme.html ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/readme.html b/examples/jms/clustered-jgroups/readme.html deleted file mode 100644 index 123e33a..0000000 --- a/examples/jms/clustered-jgroups/readme.html +++ /dev/null @@ -1,67 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<html> - <head> - <title>ActiveMQ Artemis Clustering with JGroups 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>ActiveMQ Artemis Clustering with JGroups Example</h1> - - <pre>To run the example, simply type <b>mvn verify</b> from this directory, <br>or <b>mvn -PnoServer verify</b> if you want to start and create the server manually.</pre> - - <p>This example demonstrates the working of a two node cluster using JGroups as the underlying topology broadcasting/discovery - technique.</p> - <p>We deploy a queue on to the cluster, then create a consumer on the queue on each node, and we create a producer on only one of the nodes.</p> - <p>We then send some messages via the producer, and we verify that <b>both</b> consumers receive the sent messages - in a round-robin fashion.</p> - <p>This example uses JNDI to lookup the JMS Queue and ConnectionFactory objects. If you prefer not to use - JNDI, these could be instantiated directly.</p> - <p>To enable ActiveMQ Artemis to use JGroups you need to configure JGroups configuration file and make sure it is on the classpath - by placing in the configuration directory, the file test-jgroups-file_ping.xml is the configuration used in this - exaample</p> - <p>You then configure the jgroups file used by the broadcast and discovery groups in the configuration along with the - channel name which you want this cluster to share.</p> - <pre class="prettyprint"> - <code> - <broadcast-groups> - <broadcast-group name="my-broadcast-group"> - <broadcast-period>5000</broadcast-period> - <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> - <jgroups-channel>activemq_broadcast_channel</jgroups-channel> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> - <jgroups-channel>activemq_broadcast_channel</jgroups-channel> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - </code> - </pre> - <p>For more information on ActiveMQ Artemis clustering in general, please see the clustering - section of the user manual.</p> - </body> -</html> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredJgroupsExample.java ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredJgroupsExample.java b/examples/jms/clustered-jgroups/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredJgroupsExample.java deleted file mode 100644 index f8016b1..0000000 --- a/examples/jms/clustered-jgroups/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredJgroupsExample.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.activemq.artemis.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.naming.InitialContext; -import java.util.Hashtable; - -/** - * A simple example that demonstrates clustering using jgroups. - */ -public class ClusteredJgroupsExample { - - public static void main(final String[] args) throws Exception { - Connection connection0 = null; - - Connection connection1 = null; - - InitialContext ic0 = null; - - InitialContext ic1 = null; - - try { - // Step 1. Get an initial context for looking up JNDI from server 0 - Hashtable<String, Object> properties = new Hashtable<String, Object>(); - properties.put("java.naming.factory.initial", "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory"); - properties.put("connectionFactory.ConnectionFactory", "tcp://localhost:61616"); - properties.put("queue.queue/exampleQueue", "exampleQueue"); - ic0 = new InitialContext(properties); - - // Step 2. Look-up the JMS Queue object from JNDI - Queue queue = (Queue) ic0.lookup("queue/exampleQueue"); - - // Step 3. Look-up a JMS Connection Factory object from JNDI on server 0 - ConnectionFactory cf0 = (ConnectionFactory) ic0.lookup("ConnectionFactory"); - - // Step 4. Get an initial context for looking up JNDI from server 1 - properties = new Hashtable<String, Object>(); - properties.put("java.naming.factory.initial", "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory"); - properties.put("connectionFactory.ConnectionFactory", "tcp://localhost:61617"); - ic1 = new InitialContext(properties); - - // Step 5. Look-up a JMS Connection Factory object from JNDI on server 1 - ConnectionFactory cf1 = (ConnectionFactory) ic1.lookup("ConnectionFactory"); - - // Step 6. We create a JMS Connection connection0 which is a connection to server 0 - connection0 = cf0.createConnection(); - - // Step 7. We create a JMS Connection connection1 which is a connection to server 1 - connection1 = cf1.createConnection(); - - // Step 8. We create a JMS Session on server 0 - Session session0 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 9. We create a JMS Session on server 1 - Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 10. We start the connections to ensure delivery occurs on them - connection0.start(); - - connection1.start(); - - // Step 11. We create JMS MessageConsumer objects on server 0 and server 1 - MessageConsumer consumer0 = session0.createConsumer(queue); - - MessageConsumer consumer1 = session1.createConsumer(queue); - - Thread.sleep(1000); - - // Step 12. We create a JMS MessageProducer object on server 0 - MessageProducer producer = session0.createProducer(queue); - - // Step 13. We send some messages to server 0 - - final int numMessages = 10; - - for (int i = 0; i < numMessages; i++) { - TextMessage message = session0.createTextMessage("This is text message " + i); - - producer.send(message); - - System.out.println("Sent message: " + message.getText()); - } - - // Step 14. We now consume those messages on *both* server 0 and server 1. - // We note the messages have been distributed between servers in a round robin fashion - // JMS Queues implement point-to-point message where each message is only ever consumed by a - // maximum of one consumer - - for (int i = 0; i < numMessages; i += 2) { - TextMessage message0 = (TextMessage) consumer0.receive(5000); - - System.out.println("Got message: " + message0.getText() + " from node 0"); - - TextMessage message1 = (TextMessage) consumer1.receive(5000); - - System.out.println("Got message: " + message1.getText() + " from node 1"); - } - } - finally { - // Step 15. Be sure to close our resources! - - if (connection0 != null) { - connection0.close(); - } - - if (connection1 != null) { - connection1.close(); - } - - if (ic0 != null) { - ic0.close(); - } - - if (ic1 != null) { - ic1.close(); - } - } - } -} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/broker.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/broker.xml b/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/broker.xml deleted file mode 100644 index 17809e5..0000000 --- a/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/broker.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="urn:activemq" - xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> - - <jms xmlns="urn:activemq:jms"> - <!--the queue used by the example--> - <queue name="exampleQueue"/> - </jms> - - <core xmlns="urn:activemq:core"> - - <bindings-directory>./data/bindings</bindings-directory> - - <journal-directory>./data/journal</journal-directory> - - <large-messages-directory>./data/largemessages</large-messages-directory> - - <paging-directory>./data/paging</paging-directory> - - <!-- Connectors --> - - <connectors> - <connector name="netty-connector">tcp://localhost:61616</connector> - </connectors> - - <!-- Acceptors --> - <acceptors> - <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> - </acceptors> - - <!-- Clustering configuration --> - - <broadcast-groups> - <broadcast-group name="my-broadcast-group"> - <broadcast-period>5000</broadcast-period> - <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> - <jgroups-channel>active_broadcast_channel</jgroups-channel> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> - <jgroups-channel>active_broadcast_channel</jgroups-channel> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <!-- Other config --> - - <security-settings> - <!--security for example queue--> - <security-setting match="jms.queue.exampleQueue"> - <permission type="createDurableQueue" roles="guest"/> - <permission type="deleteDurableQueue" roles="guest"/> - <permission type="createNonDurableQueue" roles="guest"/> - <permission type="deleteNonDurableQueue" roles="guest"/> - <permission type="consume" roles="guest"/> - <permission type="send" roles="guest"/> - </security-setting> - </security-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/client-jndi.properties ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/client-jndi.properties b/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/client-jndi.properties deleted file mode 100644 index 5cbe72c..0000000 --- a/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/client-jndi.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory -connectionFactory.ConnectionFactory=tcp://localhost:61616 http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/test-jgroups-file_ping.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/test-jgroups-file_ping.xml b/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/test-jgroups-file_ping.xml deleted file mode 100644 index 5fb6ab4..0000000 --- a/examples/jms/clustered-jgroups/src/main/resources/activemq/server0/test-jgroups-file_ping.xml +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<config xmlns="urn:org:jgroups" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:org:jgroups file:schema/JGroups-2.8.xsd"> - <TCP loopback="true" - recv_buf_size="20000000" - send_buf_size="640000" - discard_incompatible_packets="true" - max_bundle_size="64000" - max_bundle_timeout="30" - enable_bundling="true" - use_send_queues="false" - sock_conn_timeout="300" - - thread_pool.enabled="true" - thread_pool.min_threads="1" - thread_pool.max_threads="10" - thread_pool.keep_alive_time="5000" - thread_pool.queue_enabled="false" - thread_pool.queue_max_size="100" - thread_pool.rejection_policy="run" - - oob_thread_pool.enabled="true" - oob_thread_pool.min_threads="1" - oob_thread_pool.max_threads="8" - oob_thread_pool.keep_alive_time="5000" - oob_thread_pool.queue_enabled="false" - oob_thread_pool.queue_max_size="100" - oob_thread_pool.rejection_policy="run"/> - - <!-- a location that can be found by both server's running --> - <FILE_PING location="../../file.ping.dir"/> - <MERGE2 max_interval="30000" - min_interval="10000"/> - <FD_SOCK/> - <FD timeout="10000" max_tries="5" /> - <VERIFY_SUSPECT timeout="1500" /> - <BARRIER /> - <pbcast.NAKACK - use_mcast_xmit="false" - retransmit_timeout="300,600,1200,2400,4800" - discard_delivered_msgs="true"/> - <UNICAST timeout="300,600,1200" /> - <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" - max_bytes="400000"/> - <pbcast.GMS print_local_addr="true" join_timeout="3000" - - view_bundling="true"/> - <FC max_credits="2000000" - min_threshold="0.10"/> - <FRAG2 frag_size="60000" /> - <pbcast.STATE_TRANSFER/> - <pbcast.FLUSH timeout="0"/> -</config> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/broker.xml ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/broker.xml b/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/broker.xml deleted file mode 100644 index 267eae7..0000000 --- a/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/broker.xml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version='1.0'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="urn:activemq" - xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> - - <jms xmlns="urn:activemq:jms"> - <!--the queue used by the example--> - <queue name="exampleQueue"/> - </jms> - - <core xmlns="urn:activemq:core"> - - <bindings-directory>./data/bindings</bindings-directory> - - <journal-directory>./data/journal</journal-directory> - - <large-messages-directory>./data/largemessages</large-messages-directory> - - <paging-directory>./data/paging</paging-directory> - - <!-- Connectors --> - <connectors> - <connector name="netty-connector">tcp://localhost:61617</connector> - </connectors> - - <!-- Acceptors --> - <acceptors> - <acceptor name="netty-acceptor">tcp://localhost:61617</acceptor> - </acceptors> - - <!-- Clustering configuration --> - - <broadcast-groups> - <broadcast-group name="my-broadcast-group"> - <broadcast-period>5000</broadcast-period> - <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> - <jgroups-channel>active_broadcast_channel</jgroups-channel> - <connector-ref>netty-connector</connector-ref> - </broadcast-group> - </broadcast-groups> - - <discovery-groups> - <discovery-group name="my-discovery-group"> - <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> - <jgroups-channel>active_broadcast_channel</jgroups-channel> - <refresh-timeout>10000</refresh-timeout> - </discovery-group> - </discovery-groups> - - <cluster-connections> - <cluster-connection name="my-cluster"> - <address>jms</address> - <connector-ref>netty-connector</connector-ref> - <retry-interval>500</retry-interval> - <use-duplicate-detection>true</use-duplicate-detection> - <message-load-balancing>STRICT</message-load-balancing> - <max-hops>1</max-hops> - <discovery-group-ref discovery-group-name="my-discovery-group"/> - </cluster-connection> - </cluster-connections> - - <!-- Other config --> - - <security-settings> - <!--security for example queue--> - <security-setting match="jms.queue.exampleQueue"> - <permission type="createDurableQueue" roles="guest"/> - <permission type="deleteDurableQueue" roles="guest"/> - <permission type="createNonDurableQueue" roles="guest"/> - <permission type="deleteNonDurableQueue" roles="guest"/> - <permission type="consume" roles="guest"/> - <permission type="send" roles="guest"/> - </security-setting> - </security-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/client-jndi.properties ---------------------------------------------------------------------- diff --git a/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/client-jndi.properties b/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/client-jndi.properties deleted file mode 100644 index 7f579c1..0000000 --- a/examples/jms/clustered-jgroups/src/main/resources/activemq/server1/client-jndi.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory -java.naming.provider.url=tcp://localhost:61617
