http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/clustered-static-oneway/src/main/resources/activemq/server2/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/clustered-static-oneway/src/main/resources/activemq/server2/broker.xml b/examples/broker-features/clustered/clustered-static-oneway/src/main/resources/activemq/server2/broker.xml deleted file mode 100644 index b1043f5..0000000 --- a/examples/broker-features/clustered/clustered-static-oneway/src/main/resources/activemq/server2/broker.xml +++ /dev/null @@ -1,74 +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. - --> - -<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 --> - <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>2</max-hops> - </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/6b17d966/examples/broker-features/clustered/clustered-topic/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/clustered-topic/pom.xml b/examples/broker-features/clustered/clustered-topic/pom.xml deleted file mode 100644 index bff7c70..0000000 --- a/examples/broker-features/clustered/clustered-topic/pom.xml +++ /dev/null @@ -1,153 +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.clustered</groupId> - <artifactId>broker-clustered</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <artifactId>clustered-topic</artifactId> - <packaging>jar</packaging> - <name>ActiveMQ Artemis JMS Clustered Topic 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> - - <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>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.ClusteredTopicExample</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.clustered</groupId> - <artifactId>clustered-topic</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> -</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/clustered-topic/readme.html ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/clustered-topic/readme.html b/examples/broker-features/clustered/clustered-topic/readme.html deleted file mode 100644 index e46fca8..0000000 --- a/examples/broker-features/clustered/clustered-topic/readme.html +++ /dev/null @@ -1,55 +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 Topic 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 Topic 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 JMS Topic deployed on two different nodes. The two nodes are configured to form a cluster.</p> - <p>We then create a subscriber on the topic 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> subscribers receive all the - sent messages.</p> - <p>A JMS Topic is an example of <b>publish-subscribe</b> messaging where all subscribers receive all the - messages sent to the topic (assuming they have no message selectors).</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> - <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/6b17d966/examples/broker-features/clustered/clustered-topic/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredTopicExample.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/clustered-topic/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredTopicExample.java b/examples/broker-features/clustered/clustered-topic/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredTopicExample.java deleted file mode 100644 index f3ce9a0..0000000 --- a/examples/broker-features/clustered/clustered-topic/src/main/java/org/apache/activemq/artemis/jms/example/ClusteredTopicExample.java +++ /dev/null @@ -1,129 +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 org.apache.activemq.artemis.api.jms.ActiveMQJMSClient; -import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; - -/** - * A simple example that shows a JMS Topic clustered across two nodes of a cluster. - * Messages are sent on one node and received by consumers on both nodes. - */ -public class ClusteredTopicExample { - - public static void main(final String[] args) throws Exception { - Connection connection0 = null; - - Connection connection1 = null; - - InitialContext ic0 = null; - - InitialContext ic1 = null; - - try { - - // Step 1. Instantiate topic - Topic topic = ActiveMQJMSClient.createTopic("exampleTopic"); - - // Step 2. Look-up a JMS Connection Factory object from JNDI on server 0 - ConnectionFactory cf0 = new ActiveMQConnectionFactory("tcp://localhost:61616"); - - // Step 3. Look-up a JMS Connection Factory object from JNDI on server 1 - ConnectionFactory cf1 = new ActiveMQConnectionFactory("tcp://localhost:61617"); - - // Step 4. We create a JMS Connection connection0 which is a connection to server 0 - connection0 = cf0.createConnection(); - - // Step 5. We create a JMS Connection connection1 which is a connection to server 1 - connection1 = cf1.createConnection(); - - // Step 6. We create a JMS Session on server 0 - Session session0 = connection0.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 7. We create a JMS Session on server 1 - Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // Step 8. We start the connections to ensure delivery occurs on them - connection0.start(); - - connection1.start(); - - // Step 9. We create JMS MessageConsumer objects on server 0 and server 1 - MessageConsumer consumer0 = session0.createConsumer(topic); - - MessageConsumer consumer1 = session1.createConsumer(topic); - - 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. - // We note that all messages have been consumed by *both* consumers. - // JMS Topics implement *publish-subscribe* messaging where all consumers get a copy of all messages - - for (int i = 0; i < numMessages; i++) { - 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 JMS 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/6b17d966/examples/broker-features/clustered/clustered-topic/src/main/resources/activemq/server0/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/clustered-topic/src/main/resources/activemq/server0/broker.xml b/examples/broker-features/clustered/clustered-topic/src/main/resources/activemq/server0/broker.xml deleted file mode 100644 index a4e8dde..0000000 --- a/examples/broker-features/clustered/clustered-topic/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 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/6b17d966/examples/broker-features/clustered/clustered-topic/src/main/resources/activemq/server1/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/clustered-topic/src/main/resources/activemq/server1/broker.xml b/examples/broker-features/clustered/clustered-topic/src/main/resources/activemq/server1/broker.xml deleted file mode 100644 index 78beec3..0000000 --- a/examples/broker-features/clustered/clustered-topic/src/main/resources/activemq/server1/broker.xml +++ /dev/null @@ -1,95 +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-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/6b17d966/examples/broker-features/clustered/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/pom.xml b/examples/broker-features/clustered/pom.xml deleted file mode 100644 index 49b12e2..0000000 --- a/examples/broker-features/clustered/pom.xml +++ /dev/null @@ -1,77 +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.clustered</groupId> - <artifactId>broker-features</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <groupId>org.apache.activemq.examples.clustered</groupId> - <artifactId>broker-clustered</artifactId> - <packaging>pom</packaging> - <name>ActiveMQ Artemis Clustered Examples</name> - - <!-- Properties --> - <properties> - <!-- - Explicitly declaring the source encoding eliminates the following - message: [WARNING] Using platform encoding (UTF-8 actually) to copy - filtered resources, i.e. build is platform dependent! - --> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <activemq.basedir>${project.basedir}/../../..</activemq.basedir> - </properties> - - <profiles> - <profile> - <id>examples</id> - <modules> - <module>client-side-load-balancing</module> - <module>clustered-durable-subscription</module> - <module>clustered-grouping</module> - <module>clustered-jgroups</module> - <module>clustered-queue</module> - <module>clustered-static-oneway</module> - <module>clustered-static-discovery</module> - <module>clustered-topic</module> - <module>queue-message-redistribution</module> - <module>symmetric-cluster</module> - </modules> - </profile> - <profile> - <id>release</id> - <modules> - <module>clustered-durable-subscription</module> - <module>clustered-grouping</module> - <module>clustered-jgroups</module> - <module>clustered-queue</module> - <module>clustered-static-oneway</module> - <module>clustered-static-discovery</module> - <module>clustered-topic</module> - <module>queue-message-redistribution</module> - <module>symmetric-cluster</module> - </modules> - </profile> - </profiles> -</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/queue-message-redistribution/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/queue-message-redistribution/pom.xml b/examples/broker-features/clustered/queue-message-redistribution/pom.xml deleted file mode 100644 index 4816ad0..0000000 --- a/examples/broker-features/clustered/queue-message-redistribution/pom.xml +++ /dev/null @@ -1,155 +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.clustered</groupId> - <artifactId>broker-clustered</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <artifactId>queue-message-redistribution</artifactId> - <packaging>jar</packaging> - <name>ActiveMQ Artemis JMS Queue Message Redistribution 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> - - <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>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.QueueMessageRedistributionExample - </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.clustered</groupId> - <artifactId>queue-message-redistribution</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> - -</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/queue-message-redistribution/readme.html ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/queue-message-redistribution/readme.html b/examples/broker-features/clustered/queue-message-redistribution/readme.html deleted file mode 100644 index 35fcafe..0000000 --- a/examples/broker-features/clustered/queue-message-redistribution/readme.html +++ /dev/null @@ -1,61 +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 Message Redistribution 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>Message Redistribution 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 message redistribution between queues with the same name deployed in different - nodes of a cluster.</p> - <p>As demontrated in the clustered queue example, if queues with the same name are deployed on different nodes of - a cluster, ActiveMQ Artemis can be configured to load balance messages between the nodes on the server side.</p> - <p>However, if the consumer(s) on a particular node are closed, then messages in the queue at that node can - appear to be stranded, since they have no local consumers.</p> - <p>If this is undesirable, ActiveMQ Artemis can be configured to <b>redistribute</b> messages from the node - with no consumers, to nodes where there are consumers. If the consumers have JMS selectors set on them, then they - will only be redistributed to nodes with consumers whose selectors match.</p> - <p>By default, message redistribution is disabled, but can be enabled by specifying some AddressSettings configuration - in either <code>activemq-queues.xml</code> or <code>broker.xml</code></p> - <p>Setting <code>redistribution-delay</code> to <code>0</code> will cause redistribution to occur immediately - once there are no more matching consumers on a particular queue instance. Setting it to a positive value > 0 specifies - a delay in milliseconds before attempting to redistribute. The delay is useful in the case that another consumer is - likely to be created on the queue, to avoid unnecessary redistribution.</p> - <p>Here's the relevant snippet from the <code>activemq-queues.xml</code> configuration, which tells the server - to use a redistribution delay of <code>0</code> on any jms queues, i.e. any queues whose name starts with - <code>jms.</code></p> - <pre class="prettyprint"> - <code> - <address-setting match="jms.#"> - <redistribution-delay>0</redistribution-delay> - </address-setting> - </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/6b17d966/examples/broker-features/clustered/queue-message-redistribution/src/main/java/org/apache/activemq/artemis/jms/example/QueueMessageRedistributionExample.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/queue-message-redistribution/src/main/java/org/apache/activemq/artemis/jms/example/QueueMessageRedistributionExample.java b/examples/broker-features/clustered/queue-message-redistribution/src/main/java/org/apache/activemq/artemis/jms/example/QueueMessageRedistributionExample.java deleted file mode 100644 index b3c056b..0000000 --- a/examples/broker-features/clustered/queue-message-redistribution/src/main/java/org/apache/activemq/artemis/jms/example/QueueMessageRedistributionExample.java +++ /dev/null @@ -1,145 +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; - -/** - * This example demonstrates a queue with the same name deployed on two nodes of a cluster. - * Messages are initially round robin'd between both nodes of the cluster. - * The consumer on one of the nodes is then closed, and we demonstrate that the "stranded" messages - * are redistributed to the other node which has a consumer so they can be consumed. - */ -public class QueueMessageRedistributionExample { - - public static void main(final String[] args) throws Exception { - Connection connection0 = null; - - Connection connection1 = null; - - try { - // Step 2. Look-up the JMS Queue object from JNDI - Queue queue = ActiveMQJMSClient.createQueue("exampleQueue"); - - // Step 3. Look-up a JMS Connection Factory object from JNDI on server 0 - ConnectionFactory cf0 = new ActiveMQConnectionFactory("tcp://localhost:61616"); - - // Step 5. Look-up a JMS Connection Factory object from JNDI on server 1 - ConnectionFactory cf1 = new ActiveMQConnectionFactory("tcp://localhost:61617"); - - // 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, note the session is CLIENT_ACKNOWLEDGE - Session session0 = connection0.createSession(false, Session.CLIENT_ACKNOWLEDGE); - - // Step 9. We create a JMS Session on server 1, note the session is CLIENT_ACKNOWLEDGE - Session session1 = connection1.createSession(false, Session.CLIENT_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 - - TextMessage message0 = null; - - TextMessage message1 = null; - - for (int i = 0; i < numMessages; i += 2) { - message0 = (TextMessage) consumer0.receive(5000); - - System.out.println("Got message: " + message0.getText() + " from node 0"); - - message1 = (TextMessage) consumer1.receive(5000); - - System.out.println("Got message: " + message1.getText() + " from node 1"); - } - - // Step 15. We acknowledge the messages consumed on node 0. The sessions are CLIENT_ACKNOWLEDGE so - // messages will not get acknowledged until they are explicitly acknowledged. - // Note that we *do not* acknowledge the message consumed on node 1 yet. - message0.acknowledge(); - - // Step 16. We now close the session and consumer on node 1. (Closing the session automatically closes the - // consumer) - session1.close(); - - // Step 17. Since there is no more consumer on node 1, the messages on node 1 are now stranded (no local - // consumers) - // so ActiveMQ Artemis will redistribute them to node 0 so they can be consumed. - - for (int i = 0; i < numMessages; i += 2) { - message0 = (TextMessage) consumer0.receive(5000); - - System.out.println("Got message: " + message0.getText() + " from node 0"); - } - - // Step 18. We ack the messages. - message0.acknowledge(); - } - finally { - // Step 18. Be sure to close our resources! - - if (connection0 != null) { - connection0.close(); - } - - if (connection1 != null) { - connection1.close(); - } - } - } -} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server0/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server0/broker.xml b/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server0/broker.xml deleted file mode 100644 index 70ff4d4..0000000 --- a/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server0/broker.xml +++ /dev/null @@ -1,106 +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>ON_DEMAND</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> - - <address-settings> - <!-- We set a redistribution delay of zero on all jms queues and topic subscriptions - Default redistribution delay as -1 which means "disable redistribution" - Setting it to a value > 0 means how long to wait before redistributing, if a consumer is closed - then another one quickly recreated you might want to set it thus, to avoid unnecessary - redistribution --> - <address-setting match="jms.#"> - <redistribution-delay>0</redistribution-delay> - </address-setting> - </address-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server1/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server1/broker.xml b/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server1/broker.xml deleted file mode 100644 index 6fc6f32..0000000 --- a/examples/broker-features/clustered/queue-message-redistribution/src/main/resources/activemq/server1/broker.xml +++ /dev/null @@ -1,107 +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>ON_DEMAND</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> - - <address-settings> - <!-- We set a redistribution delay of zero on all jms queues and topic subscriptions - Default redistribution delay as -1 which means "disable redistribution" - Setting it to a value > 0 means how long to wait before redistributing, if a consumer is closed - then another one quickly recreated you might want to set it thus, to avoid unnecessary - redistribution --> - <address-setting match="jms.#"> - <redistribution-delay>0</redistribution-delay> - </address-setting> - </address-settings> - - </core> -</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/symmetric-cluster/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/symmetric-cluster/pom.xml b/examples/broker-features/clustered/symmetric-cluster/pom.xml deleted file mode 100644 index 5be9c1d..0000000 --- a/examples/broker-features/clustered/symmetric-cluster/pom.xml +++ /dev/null @@ -1,320 +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.clustered</groupId> - <artifactId>broker-clustered</artifactId> - <version>1.0.1-SNAPSHOT</version> - </parent> - - <artifactId>symmetric-cluster</artifactId> - <packaging>jar</packaging> - <name>ActiveMQ Artemis JMS Symmetric Cluster 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> - - <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>${noSever}</ignore> - <instance>${basedir}/target/server0</instance> - <configuration>${basedir}/target/classes/activemq/server0</configuration> - <javaOptions>-Dudp-address=${udp-address}</javaOptions> - </configuration> - </execution> - <execution> - <id>create1</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <instance>${basedir}/target/server1</instance> - <configuration>${basedir}/target/classes/activemq/server1</configuration> - <javaOptions>-Dudp-address=${udp-address}</javaOptions> - </configuration> - </execution> - <execution> - <id>create2</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <instance>${basedir}/target/server2</instance> - <configuration>${basedir}/target/classes/activemq/server2</configuration> - <javaOptions>-Dudp-address=${udp-address}</javaOptions> - </configuration> - </execution> - <execution> - <id>create3</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <instance>${basedir}/target/server3</instance> - <configuration>${basedir}/target/classes/activemq/server3</configuration> - <javaOptions>-Dudp-address=${udp-address}</javaOptions> - </configuration> - </execution> - <execution> - <id>create4</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <instance>${basedir}/target/server4</instance> - <configuration>${basedir}/target/classes/activemq/server4</configuration> - <javaOptions>-Dudp-address=${udp-address}</javaOptions> - </configuration> - </execution> - <execution> - <id>create5</id> - <goals> - <goal>create</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <instance>${basedir}/target/server5</instance> - <configuration>${basedir}/target/classes/activemq/server5</configuration> - <javaOptions>-Dudp-address=${udp-address}</javaOptions> - </configuration> - </execution> - <execution> - <id>start0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</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>${noSever}</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>${noSever}</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>start3</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server3</location> - <testURI>tcp://localhost:61619</testURI> - <args> - <param>run</param> - </args> - <name>server3</name> - </configuration> - </execution> - <execution> - <id>start4</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server4</location> - <testURI>tcp://localhost:61620</testURI> - <args> - <param>run</param> - </args> - <name>server4</name> - </configuration> - </execution> - <execution> - <id>start5</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <spawn>true</spawn> - <location>${basedir}/target/server5</location> - <testURI>tcp://localhost:61621</testURI> - <args> - <param>run</param> - </args> - <name>server5</name> - </configuration> - </execution> - <execution> - <id>runClient</id> - <goals> - <goal>runClient</goal> - </goals> - <configuration> - <clientClass>org.apache.activemq.artemis.jms.example.SymmetricClusterExample</clientClass> - </configuration> - </execution> - <execution> - <id>stop0</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <location>${basedir}/target/server0</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop1</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <location>${basedir}/target/server1</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop2</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <location>${basedir}/target/server2</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop3</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <location>${basedir}/target/server3</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop4</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <location>${basedir}/target/server4</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - <execution> - <id>stop5</id> - <goals> - <goal>cli</goal> - </goals> - <configuration> - <ignore>${noSever}</ignore> - <location>${basedir}/target/server5</location> - <args> - <param>stop</param> - </args> - </configuration> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.apache.activemq.examples.clustered</groupId> - <artifactId>symmetric-cluster</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> - -</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/symmetric-cluster/readme.html ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/symmetric-cluster/readme.html b/examples/broker-features/clustered/symmetric-cluster/readme.html deleted file mode 100644 index 043057d..0000000 --- a/examples/broker-features/clustered/symmetric-cluster/readme.html +++ /dev/null @@ -1,74 +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 Symmetric Cluster 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 Symmetric Cluster 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 examples demonstrates a <b>symmetric cluster</b> set-up with ActiveMQ Artemis.</p> - <p>ActiveMQ Artemis has extremely flexible clustering which allows you to set-up servers in - many different topologies.</p> - <p>The most common topology that you'll perhaps be familiar with if you are used to application - server clustering is a <b>symmetric cluster</b>.</p> - <p>With a symmetric cluster, the cluster is homogeneous, i.e. each node is configured the same - as every other node, and every node is connected to every other node in the cluster.</p> - <p>By connecting node in such a way, we can, from a JMS point of view, give the impression of distributed - JMS queues and topics.</p> - <p>The configuration used in this example is very similar to the configuration used by ActiveMQ - when installed as a clustered profile in JBoss Application Server.</p> - <p>To set up ActiveMQ Artemis to form a symmetric cluster we simply need to mark each server as <code>clustered</code> - and we need to define a <code>cluster-connection</code> in <code>broker.xml</code>.</p> - <p>The <code>cluster-connection</code> tells the nodes what other nodes to make connections to. - With a <code>cluster-connection</code> each node that we connect to can either be specified - indivually, or we can use UDP discovery to find out what other nodes are in the cluster.</p> - <p>Using UDP discovery makes configuration simpler since we don't have to know what nodes are - available at any one time.</p> - <p>Here's the relevant snippet from the server configuration, which tells the server to form a cluster - with the other nodes:</p> - <pre class="prettyprint"> - <code> - <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> - </code> - </pre> - <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>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>For more information on configuring 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/6b17d966/examples/broker-features/clustered/symmetric-cluster/src/main/java/org/apache/activemq/artemis/jms/example/SymmetricClusterExample.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/symmetric-cluster/src/main/java/org/apache/activemq/artemis/jms/example/SymmetricClusterExample.java b/examples/broker-features/clustered/symmetric-cluster/src/main/java/org/apache/activemq/artemis/jms/example/SymmetricClusterExample.java deleted file mode 100644 index 1163ec8..0000000 --- a/examples/broker-features/clustered/symmetric-cluster/src/main/java/org/apache/activemq/artemis/jms/example/SymmetricClusterExample.java +++ /dev/null @@ -1,222 +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.jms.Topic; - -import org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration; -import org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory; -import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient; -import org.apache.activemq.artemis.api.jms.JMSFactoryType; - -/** - * This example demonstrates a cluster of three nodes set up in a symmetric topology - i.e. each - * node is connected to every other node in the cluster. Also each node, has it's own backup node. - * <p> - * This is probably the most obvious clustering topology and the one most people will be familiar - * with from using clustering in an app server, where every node has pretty much identical - * configuration to every other node. - * <p> - * By clustering nodes symmetrically, ActiveMQ Artemis can give the impression of clustered queues, topics - * and durable subscriptions. - * <p> - * In this example we send some messages to a distributed queue and topic and kill all the live - * servers at different times, and verify that they transparently fail over onto their backup - * servers. - * <p> - * Please see the readme.html file for more information. - */ -public class SymmetricClusterExample { - - public static void main(final String[] args) throws Exception { - Connection connection0 = null; - - Connection connection1 = null; - - Connection connection2 = null; - - Connection connection3 = null; - - Connection connection4 = null; - - Connection connection5 = null; - - try { - // Step 1 - We instantiate a connection factory directly, specifying the UDP address and port for discovering - // the list of servers in the cluster. - // We could use JNDI to look-up a connection factory, but we'd need to know the JNDI server host and port for - // the - // specific server to do that, and that server might not be available at the time. By creating the - // connection factory directly we avoid having to worry about a JNDI look-up. - // In an app server environment you could use HA-JNDI to lookup from the clustered JNDI servers without - // having to know about a specific one. - UDPBroadcastEndpointFactory udpCfg = new UDPBroadcastEndpointFactory(); - udpCfg.setGroupAddress("231.7.7.7").setGroupPort(9876); - DiscoveryGroupConfiguration groupConfiguration = new DiscoveryGroupConfiguration(); - groupConfiguration.setBroadcastEndpointFactory(udpCfg); - - ConnectionFactory cf = ActiveMQJMSClient.createConnectionFactoryWithHA(groupConfiguration, JMSFactoryType.CF); - - // We give a little while for each server to broadcast its whereabouts to the client - Thread.sleep(2000); - - // Step 2. Directly instantiate JMS Queue and Topic objects - Queue queue = ActiveMQJMSClient.createQueue("exampleQueue"); - - Topic topic = ActiveMQJMSClient.createTopic("exampleTopic"); - - // 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 - - 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); - - // Step 5. We create a topic subscriber on each server - - 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); - - // Step 6. We create a queue consumer on server 0 - - MessageConsumer consumer0 = session0.createConsumer(queue); - - // Step 7. We create an anonymous message producer on just one server 2 - - MessageProducer producer2 = session2.createProducer(null); - - // Step 8. We send 500 messages each to the queue and topic - - final int numMessages = 500; - - for (int i = 0; i < numMessages; i++) { - TextMessage message1 = session2.createTextMessage("Topic message " + i); - - producer2.send(topic, message1); - - TextMessage message2 = session2.createTextMessage("Queue message " + i); - - producer2.send(queue, message2); - } - - // Step 9. Verify all subscribers and the consumer receive the messages - - for (int i = 0; i < numMessages; i++) { - TextMessage received0 = (TextMessage) subscriber0.receive(5000); - - if (received0 == null) { - throw new IllegalStateException("Message is null!"); - } - - TextMessage received1 = (TextMessage) subscriber1.receive(5000); - - if (received1 == null) { - throw new IllegalStateException("Message is null!"); - } - - TextMessage received2 = (TextMessage) subscriber2.receive(5000); - - if (received2 == null) { - throw new IllegalStateException("Message is null!"); - } - - TextMessage received3 = (TextMessage) subscriber3.receive(5000); - - if (received3 == null) { - throw new IllegalStateException("Message is null!"); - } - - TextMessage received4 = (TextMessage) subscriber4.receive(5000); - - if (received4 == null) { - throw new IllegalStateException("Message is null!"); - } - - TextMessage received5 = (TextMessage) subscriber5.receive(5000); - - if (received5 == null) { - throw new IllegalStateException("Message is null!"); - } - - TextMessage received6 = (TextMessage) consumer0.receive(5000); - - if (received6 == null) { - throw new IllegalStateException("Message is null!"); - } - } - } - finally { - // Step 15. Be sure to close our resources! - - connection0.close(); - connection1.close(); - connection2.close(); - connection3.close(); - connection4.close(); - connection5.close(); - } - } -} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b17d966/examples/broker-features/clustered/symmetric-cluster/src/main/resources/activemq/server0/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/clustered/symmetric-cluster/src/main/resources/activemq/server0/broker.xml b/examples/broker-features/clustered/symmetric-cluster/src/main/resources/activemq/server0/broker.xml deleted file mode 100644 index cd89de7..0000000 --- a/examples/broker-features/clustered/symmetric-cluster/src/main/resources/activemq/server0/broker.xml +++ /dev/null @@ -1,99 +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"> - <queue name="exampleQueue"/> - - <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>ON_DEMAND</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> - <!-- Default JMS security --> - <security-setting match="jms.#"> - <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>