From edef0240bd3155534130af8098335324d60cc2e0 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Mon, 31 Aug 2015 21:03:46 -0400 Subject: [PATCH 1/5] manual additions about maven plugin --- docs/user-manual/en/SUMMARY.md | 1 + docs/user-manual/en/libaio.md | 29 +--- docs/user-manual/en/maven-plugin.md | 223 ++++++++++++++++++++++++++++ 3 files changed, 230 insertions(+), 23 deletions(-) create mode 100644 docs/user-manual/en/maven-plugin.md diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md index f0413ebefd..923b90599f 100644 --- a/docs/user-manual/en/SUMMARY.md +++ b/docs/user-manual/en/SUMMARY.md @@ -53,6 +53,7 @@ * [Intercepting Operations](intercepting-operations.md) * [Protocols and Interoperability](protocols-interoperability.md) * [Tools](tools.md) +* [Maven Plugin](maven-plugin.md) * [Performance Tuning](perf-tuning.md) * [Configuration Reference](configuration-index.md) diff --git a/docs/user-manual/en/libaio.md b/docs/user-manual/en/libaio.md index 787d04445a..a8a1ca7704 100644 --- a/docs/user-manual/en/libaio.md +++ b/docs/user-manual/en/libaio.md @@ -62,16 +62,18 @@ These are the required linux packages to be installed for the compilation to wor - libaio-dev - Compilation support for libaio +- cmake + - A full JDK installed with the environment variable JAVA\_HOME set to its location To perform this installation on RHEL or Fedora, you can simply type this at a command line: - sudo yum install libtool gcc-c++ gcc libaio libaio-devel + sudo yum install libtool gcc-c++ gcc libaio libaio-devel cmake Or on Debian systems: - sudo apt-get install libtool gcc-g++ gcc libaio libaio-dev + sudo apt-get install libtool gcc-g++ gcc libaio libaio- cmake > **Note** > @@ -82,26 +84,7 @@ Or on Debian systems: ## Invoking the compilation In the source distribution or git clone, in the `artemis-native` directory, execute the shell -script `compile-native.sh`. This script will invoke the proper maven profile to perform the native build. +script `compile-native.sh`. This script will invoke the proper commands to perform the native build. - someUser@someBox:/checkout-dir/artemis-native$ ./compile-native.sh - [INFO] Scanning for projects... - [INFO] - [INFO] ------------------------------------------------------------------------ - [INFO] Building ActiveMQ Artemis Native POM 1.0.0 - [INFO] ------------------------------------------------------------------------ - [INFO] - [INFO] --- nar-maven-plugin:3.0.0:nar-validate (default-nar-validate) @ artemis-native --- - [INFO] Using AOL: amd64-Linux-gpp - [INFO] - [INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-java) @ artemis-native --- - ... +If you want more information refer to the [cmake web pages](http://cmake.org). -The produced library will be at -`./target/nar/artemis-native-RELEASE-amd64-Linux-gpp-jni/lib/amd64-Linux-gpp/jni/ -libartemis-native-RELEASE.so`. Simply move that file over -`bin` with the proper rename [library -path](#using-server.library.path). - -If you want to perform changes on the Apache ActiveMQ Artemis libaio code, you could -just call make directly at the `native-src` directory. diff --git a/docs/user-manual/en/maven-plugin.md b/docs/user-manual/en/maven-plugin.md new file mode 100644 index 0000000000..2602ec8115 --- /dev/null +++ b/docs/user-manual/en/maven-plugin.md @@ -0,0 +1,223 @@ +# Maven Plugins + +Since Artemis 1.1.0 Artemis provides the possibility of using Maven Plugins to manage the life cycle of servers. + +## When to use it + +These Maven plugins were initially created to manage server instances across our examples. They can create a server, start, and do any CLI operation over servers. + +You could for example use these maven plugins on your testsuite or deployment automation. + + +## Goals + +There are three goals that you can use + +- create + +This will create a server accordingly to your arguments. You can do some extra tricks here such as installing extra libraries for external modules. + +- cli + +This will perform any CLI operation. This is basically a maven expression of the CLI classes + +- runClient + +This is a simple wrapper around classes implementing a static main call. Notice that this won't spawn a new VM or new Thread. + + +## Declaration + +On your pom, use the plugins section: + +```xml + + + + org.apache.activemq + artemis-maven-plugin +``` + +## create goal + +I won't detail every operation of the create plugin here, but I will try to describe the main parameters: + +Name | Description +:--- | :--- +configuration | A place that will hold any file to replace on the configuration. For instance if you are providing your own broker.xml. Default is "${basedir}/target/classes/activemq/server0" +home | The location where you downloaded and installed artemis. Default is "${activemq.basedir}" +alternateHome | This is used case you have two possible locations for your home (e.g. one under compile and one under production +instance | Where the server is going to be installed. Default is "${basedir}/target/server0" +liblist[] | A list of libraries to be installed under ./lib. ex: "org.jgroups:jgroups:3.6.0.Final" + + +Example: + +```xml + + + create + + create + + + ${noServer} + + + +``` + + +## cli goal + +Some properties for the CLI + +Name | Description +:--- | :--- +configuration | A place that will hold any file to replace on the configuration. For instance if you are providing your own broker.xml. Default is "${basedir}/target/classes/activemq/server0" +home | The location where you downloaded and installed artemis. Default is "${activemq.basedir}" +alternateHome | This is used case you have two possible locations for your home (e.g. one under compile and one under production +instance | Where the server is going to be installed. Default is "${basedir}/target/server0" + + +Similarly to the create plugin, the artemis exampels are using the cli plugin. Look at them for concrete examples. + +Example: +```xml + + start + + cli + + + true + ${noServer} + tcp://localhost:61616 + + run + + + +``` + + +### runClient goal + +This is a simple solution for running classes implementing the main method. + +Name | Description +:--- | :--- +clientClass | A class implement a static void main(String arg[]) +args | A string array of arguments passed to the method + +Example: + +```xml + + runClient + + runClient + + + org.apache.activemq.artemis.jms.example.QueueExample + + +``` + +### Complete example + + +The following example is a copy of the /examples/features/standard/queue example. You may refer to it directly under the examples directory tree. + +```xml + + 4.0.0 + + + org.apache.activemq.examples.broker + jms-examples + 1.0.1-SNAPSHOT + + + queue + jar + ActiveMQ Artemis JMS Queue Example + + + ${project.basedir}/../../../.. + + + + + org.apache.activemq + artemis-jms-client + ${project.version} + + + + + + + org.apache.activemq + artemis-maven-plugin + + + create + + create + + + ${noServer} + + + + start + + cli + + + true + ${noServer} + tcp://localhost:61616 + + run + + + + + runClient + + runClient + + + org.apache.activemq.artemis.jms.example.QueueExample + + + + stop + + cli + + + ${noServer} + + stop + + + + + + + org.apache.activemq.examples.broker + queue + ${project.version} + + + + + + + + +``` \ No newline at end of file From 616a22e477ad4bf6a86f99fc28c54b6be72ae74e Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Mon, 31 Aug 2015 21:11:08 -0400 Subject: [PATCH 2/5] picture change because of protocols --- .../en/diagrams/architecture-diagrams.odg | Bin 16808 -> 12645 bytes docs/user-manual/en/images/architecture1.jpg | Bin 35696 -> 62657 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/user-manual/en/diagrams/architecture-diagrams.odg b/docs/user-manual/en/diagrams/architecture-diagrams.odg index 5fc7da6b040437f3d09ac8e81c231b1996beed6e..757a45b00036775ac89e1eb264e28a932efa7af0 100644 GIT binary patch literal 12645 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 literal 16808 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%0D>JIN|TI9K%Ts9P= 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 GYyS^jQj7rr diff --git a/docs/user-manual/en/images/architecture1.jpg b/docs/user-manual/en/images/architecture1.jpg index c36bf7393337a97bea0ee48727cf90fd9b1174d6..d2b9de476269b64c7114bc07f9c9acb404133ecb 100644 GIT binary patch literal 62657 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 literal 35696 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 From 355b65a50b90a64a0373c539bb0bac73122b93b6 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Tue, 1 Sep 2015 17:46:13 -0400 Subject: [PATCH 3/5] modifications to example chapter --- docs/user-manual/en/examples.md | 194 +++++++++++++++++++++++++++++--- 1 file changed, 178 insertions(+), 16 deletions(-) diff --git a/docs/user-manual/en/examples.md b/docs/user-manual/en/examples.md index 30e499ec1f..0bb8910982 100644 --- a/docs/user-manual/en/examples.md +++ b/docs/user-manual/en/examples.md @@ -4,31 +4,191 @@ Examples The Apache ActiveMQ Artemis distribution comes with over 90 run out-of-the-box examples demonstrating many of the features. -The examples are available in the distribution, in the `examples` -directory. Examples are split into JMS and core examples. JMS examples -show how a particular feature can be used by a normal JMS client. Core -examples show how the equivalent feature can be used by a core messaging -client. +The examples are available in both the binary and source distribution under the `examples` +directory. Examples are split by the following source tree: + +- features - Examples containing broker specific features. + - ha - examples showing failover and reconnection capabilities. + - clustered - examples showing load balancing and distribution capabilities. + - perf - examples allowing you to run a few performance tests on the server + - sub-modules - examples of integrated external modules. +- protocols - Protocol specific examples + - openwire + - mqtt + - stomp + - amqp A set of Java EE examples are also provided which need WildFly installed to be able to run. -JMS Examples -============ +Examples +======== -To run a JMS example, simply `cd` into the appropriate example directory -and type `mvn verify -Pexample` (For details please read the readme.html in each +To run any example, simply `cd` into the appropriate example directory +and type `mvn verify` or `mvn install` (For details please read the readme.html in each example directory). -Here's a listing of the examples with a brief description. +You can use the profile -Pexamples to run multiple examples under any example tree. -JMS AeroGear ------------- +For each server, you will have a created server under ./target/server0 (some examples use more than one server). -This example shows how you can send a message to a mobile device by -leveraging AeroGears push technology which provides support for -different push notification technologies like Google Cloud Messaging, -Apple's APNs or Mozilla's SimplePush. +You have the option to disable the server running (say if you want to start the server manually) by simply specifying the -PnoServer profile + + +This will run the example without a server: + +``` sh +# running an example without running the server +mvn verify -PnoServer +``` + +Also under ./target there will be a script repeating the commands to create each server: + +Example this is create-server0.sh created for the queue example. It could be useful to see what we do on the example: +```sh +# These are the commands used to create server0 +/myInstallDirectory/apache-artemis-1.1.0/bin/artemis create --allow-anonymous --silent --force --no-web --user guest --password guest --role guest --port-offset 0 --data ./data --allow-anonymous --no-autotune --verbose /myInstallDirectory/apache-artemis-1.1.0/examples/features/standard/queue/target/server0 +``` + +These examples are all using the [Maven plugin](maven-plugin.md), which can be useful for running your test servers as well. + +This is the common output when running an example. On this case taken from the Queue example: + + +```sh +[INFO] Scanning for projects... +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] Building ActiveMQ Artemis JMS Queue Example 1.1.0 +[INFO] ------------------------------------------------------------------------ +[INFO] +[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-java) @ queue --- +[INFO] +[INFO] --- maven-remote-resources-plugin:1.5:process (default) @ queue --- +[INFO] +[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ queue --- +[INFO] Using 'UTF-8' encoding to copy filtered resources. +[INFO] Copying 1 resource +[INFO] Copying 3 resources +[INFO] +[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ queue --- +[INFO] Changes detected - recompiling the module! +[INFO] Compiling 1 source file to /work/apache-artemis-1.1.0/examples/features/standard/queue/target/classes +[INFO] +[INFO] --- maven-checkstyle-plugin:2.16:check (default) @ queue --- +[INFO] +[INFO] --- apache-rat-plugin:0.11:check (default) @ queue --- +[INFO] RAT will not execute since it is configured to be skipped via system property 'rat.skip'. +[INFO] +[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ queue --- +[INFO] Using 'UTF-8' encoding to copy filtered resources. +[INFO] skip non existing resourceDirectory /work/apache-artemis-1.1.0/examples/features/standard/queue/src/test/resources +[INFO] Copying 3 resources +[INFO] +[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ queue --- +[INFO] No sources to compile +[INFO] +[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ queue --- +[INFO] +[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ queue --- +[INFO] Building jar: /work/apache-artemis-1.1.0/examples/features/standard/queue/target/queue-1.1.0.jar +[INFO] +[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ queue --- +[INFO] +[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ queue >>> +[INFO] +[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-java) @ queue --- +[INFO] +[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ queue <<< +[INFO] +[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ queue --- +[INFO] Building jar: /work/apache-artemis-1.1.0/examples/features/standard/queue/target/queue-1.1.0-sources.jar +[INFO] +[INFO] >>> maven-source-plugin:2.2.1:jar (default) > generate-sources @ queue >>> +[INFO] +[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-java) @ queue --- +[INFO] +[INFO] <<< maven-source-plugin:2.2.1:jar (default) < generate-sources @ queue <<< +[INFO] +[INFO] --- maven-source-plugin:2.2.1:jar (default) @ queue --- +[INFO] +[INFO] --- artemis-maven-plugin:1.1.0:create (create) @ queue --- +[INFO] Local id: local + url: file:///Users/apacheuser/.m2/repository/ + layout: default +snapshots: [enabled => true, update => always] + releases: [enabled => true, update => always] + +[INFO] Entries.size 2 +[INFO] ... key=project = MavenProject: org.apache.activemq.examples.broker:queue:1.1.0 @ /work/apache-artemis-1.1.0/examples/features/standard/queue/pom.xml +[INFO] ... key=pluginDescriptor = Component Descriptor: role: 'org.apache.maven.plugin.Mojo', implementation: 'org.apache.activemq.artemis.maven.ArtemisCLIPlugin', role hint: 'org.apache.activemq:artemis-maven-plugin:1.1.0:cli' +role: 'org.apache.maven.plugin.Mojo', implementation: 'org.apache.activemq.artemis.maven.ArtemisCreatePlugin', role hint: 'org.apache.activemq:artemis-maven-plugin:1.1.0:create' +role: 'org.apache.maven.plugin.Mojo', implementation: 'org.apache.activemq.artemis.maven.ArtemisClientPlugin', role hint: 'org.apache.activemq:artemis-maven-plugin:1.1.0:runClient' +--- +Executing org.apache.activemq.artemis.cli.commands.Create create --allow-anonymous --silent --force --no-web --user guest --password guest --role guest --port-offset 0 --data ./data --allow-anonymous --no-autotune --verbose /work/apache-artemis-1.1.0/examples/features/standard/queue/target/server0 +Home::/work/apache-artemis-1.1.0/examples/features/standard/queue/../../../.., Instance::. +Creating ActiveMQ Artemis instance at: /work/apache-artemis-1.1.0/examples/features/standard/queue/target/server0 + +You can now start the broker by executing: + + "/work/apache-artemis-1.1.0/examples/features/standard/queue/target/server0/bin/artemis" run + +Or you can run the broker in the background using: + + "/work/apache-artemis-1.1.0/examples/features/standard/queue/target/server0/bin/artemis-service" start + +[INFO] ################################################################################################### +[INFO] create-server0.sh created with commands to reproduce server0 +[INFO] under /work/apache-artemis-1.1.0/examples/features/standard/queue/target +[INFO] ################################################################################################### +[INFO] +[INFO] --- artemis-maven-plugin:1.1.0:cli (start) @ queue --- +[INFO] awaiting server to start +[INFO] awaiting server to start +server-out: _ _ _ +server-out: / \ ____| |_ ___ __ __(_) _____ +server-out: / _ \| _ \ __|/ _ \ \/ | |/ __/ +server-out: / ___ \ | \/ |_/ __/ |\/| | |\___ \ +server-out: /_/ \_\| \__\____|_| |_|_|/___ / +server-out: Apache ActiveMQ Artemis 1.1.0 +server-out: +server-out: +server-out:17:30:25,091 INFO [org.apache.activemq.artemis.integration.bootstrap] AMQ101000: Starting ActiveMQ Artemis Server +server-out:17:30:25,120 INFO [org.apache.activemq.artemis.core.server] AMQ221000: live Message Broker is starting with configuration Broker Configuration (clustered=false,journalDirectory=./data/journal,bindingsDirectory=./data/bindings,largeMessagesDirectory=./data/large-messages,pagingDirectory=./data/paging) +server-out:17:30:25,152 INFO [org.apache.activemq.artemis.core.server] AMQ221013: Using NIO Journal +server-out:17:30:25,195 INFO [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-server]. Adding protocol support for: CORE +server-out:17:30:25,199 INFO [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-amqp-protocol]. Adding protocol support for: AMQP +server-out:17:30:25,209 INFO [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-hornetq-protocol]. Adding protocol support for: HORNETQ +server-out:17:30:25,211 INFO [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-mqtt-protocol]. Adding protocol support for: MQTT +server-out:17:30:25,214 INFO [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-openwire-protocol]. Adding protocol support for: OPENWIRE +server-out:17:30:25,335 INFO [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-stomp-protocol]. Adding protocol support for: STOMP +[INFO] awaiting server to start +server-out:17:30:25,781 INFO [org.apache.activemq.artemis.core.server] AMQ221003: trying to deploy queue jms.queue.DLQ +server-out:17:30:25,835 INFO [org.apache.activemq.artemis.core.server] AMQ221003: trying to deploy queue jms.queue.ExpiryQueue +server-out:17:30:25,933 INFO [org.apache.activemq.artemis.core.server] AMQ221020: Started Acceptor at 0.0.0.0:61616 for protocols [CORE,MQTT,AMQP,HORNETQ,STOMP,OPENWIRE] +server-out:17:30:25,936 INFO [org.apache.activemq.artemis.core.server] AMQ221020: Started Acceptor at 0.0.0.0:5445 for protocols [HORNETQ,STOMP] +server-out:17:30:25,939 INFO [org.apache.activemq.artemis.core.server] AMQ221020: Started Acceptor at 0.0.0.0:5672 for protocols [AMQP] +server-out:17:30:25,944 INFO [org.apache.activemq.artemis.core.server] AMQ221020: Started Acceptor at 0.0.0.0:1883 for protocols [MQTT] +server-out:17:30:25,948 INFO [org.apache.activemq.artemis.core.server] AMQ221020: Started Acceptor at 0.0.0.0:61613 for protocols [STOMP] +server-out:17:30:25,949 INFO [org.apache.activemq.artemis.core.server] AMQ221007: Server is now live +server-out:17:30:25,949 INFO [org.apache.activemq.artemis.core.server] AMQ221001: Apache ActiveMQ Artemis Message Broker version 1.1.0 [nodeID=a855176b-50f0-11e5-937e-2fe9bb000966] +[INFO] Server started +[INFO] +[INFO] --- artemis-maven-plugin:1.1.0:runClient (runClient) @ queue --- +Sent message: This is a text message +Received message: This is a text message +[INFO] +[INFO] --- artemis-maven-plugin:1.1.0:cli (stop) @ queue --- +server-out:17:30:27,476 INFO [org.apache.activemq.artemis.core.server] AMQ221002: Apache ActiveMQ Artemis Message Broker version 1.0.1-SNA +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 7.840 s +[INFO] Finished at: 2015-09-01T17:30:27-04:00 +[INFO] Final Memory: 42M/508M +[INFO] ------------------------------------------------------------------------ + +``` Applet ------ @@ -471,6 +631,8 @@ OpenWire The `Openwire` example shows how to configure an Apache ActiveMQ Artemis server to communicate with an Apache ActiveMQ Artemis JMS client that uses open-wire protocol. +You will find the queue example for open wire, and the chat example. + Paging ------ From fa15b29dfc3976b7d141875726e1d5c827a016d7 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Tue, 1 Sep 2015 23:26:54 -0400 Subject: [PATCH 4/5] Fixing clustered examples on MacOS (and possibly other envs) --- examples/README.md | 7 +++++++ .../clustered/client-side-load-balancing/pom.xml | 8 ++++++++ .../clustered/clustered-durable-subscription/pom.xml | 4 ++++ .../features/clustered/clustered-grouping/pom.xml | 6 ++++++ .../features/clustered/clustered-jgroups/pom.xml | 4 ++++ examples/features/clustered/clustered-queue/pom.xml | 4 ++++ .../clustered/clustered-static-discovery/pom.xml | 6 ++++++ .../clustered/clustered-static-oneway/pom.xml | 6 ++++++ examples/features/clustered/clustered-topic/pom.xml | 4 ++++ .../clustered/queue-message-redistribution/pom.xml | 4 ++++ .../features/clustered/symmetric-cluster/pom.xml | 12 ++++++------ 11 files changed, 59 insertions(+), 6 deletions(-) diff --git a/examples/README.md b/examples/README.md index e9d9e36112..3d0fdd9131 100644 --- a/examples/README.md +++ b/examples/README.md @@ -22,6 +22,13 @@ directory but before you do you will need to up the memory used by running: ``` export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=256m" ``` + +if you are running a Mac OS, you may want to add this to run the clustered examples: + +``` +export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true" +``` + ### Recreating the examples If you are trying to copy the examples somewhere else and modifying them. Consider asking Maven to explicitly list all the dependencies: diff --git a/examples/features/clustered/client-side-load-balancing/pom.xml b/examples/features/clustered/client-side-load-balancing/pom.xml index c2993b22e1..a9b092c759 100644 --- a/examples/features/clustered/client-side-load-balancing/pom.xml +++ b/examples/features/clustered/client-side-load-balancing/pom.xml @@ -59,6 +59,8 @@ under the License. ${noServer} ${basedir}/target/server0 true + + -Djava.net.preferIPv4Stack=true @@ -71,6 +73,8 @@ under the License. ${basedir}/target/server1 true 1 + + -Djava.net.preferIPv4Stack=true @@ -83,6 +87,8 @@ under the License. ${basedir}/target/server2 true 2 + + -Djava.net.preferIPv4Stack=true @@ -139,6 +145,8 @@ under the License. runClient + org.apache.activemq.artemis.jms.example.ClientSideLoadBalancingExample diff --git a/examples/features/clustered/clustered-durable-subscription/pom.xml b/examples/features/clustered/clustered-durable-subscription/pom.xml index 8f28710808..d6fbb98ab6 100644 --- a/examples/features/clustered/clustered-durable-subscription/pom.xml +++ b/examples/features/clustered/clustered-durable-subscription/pom.xml @@ -60,6 +60,8 @@ under the License. true ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -73,6 +75,8 @@ under the License. ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 1 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/clustered-grouping/pom.xml b/examples/features/clustered/clustered-grouping/pom.xml index b41a2ad0c8..a62589462d 100644 --- a/examples/features/clustered/clustered-grouping/pom.xml +++ b/examples/features/clustered/clustered-grouping/pom.xml @@ -59,6 +59,8 @@ under the License. ${noServer} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -70,6 +72,8 @@ under the License. ${noServer} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 + + -Djava.net.preferIPv4Stack=true @@ -81,6 +85,8 @@ under the License. ${noServer} ${basedir}/target/server2 ${basedir}/target/classes/activemq/server2 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/clustered-jgroups/pom.xml b/examples/features/clustered/clustered-jgroups/pom.xml index 30f6a2049f..5e22e0ccef 100644 --- a/examples/features/clustered/clustered-jgroups/pom.xml +++ b/examples/features/clustered/clustered-jgroups/pom.xml @@ -63,6 +63,8 @@ under the License. ${noServer} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -78,6 +80,8 @@ under the License. ${noServer} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/clustered-queue/pom.xml b/examples/features/clustered/clustered-queue/pom.xml index 78a8c8ba1c..2f876bedc5 100644 --- a/examples/features/clustered/clustered-queue/pom.xml +++ b/examples/features/clustered/clustered-queue/pom.xml @@ -59,6 +59,8 @@ under the License. ${noServer} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -70,6 +72,8 @@ under the License. ${noServer} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/clustered-static-discovery/pom.xml b/examples/features/clustered/clustered-static-discovery/pom.xml index b3ce3c14e2..860a717390 100644 --- a/examples/features/clustered/clustered-static-discovery/pom.xml +++ b/examples/features/clustered/clustered-static-discovery/pom.xml @@ -64,6 +64,8 @@ under the License. ${noServer} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -75,6 +77,8 @@ under the License. ${noServer} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 + + -Djava.net.preferIPv4Stack=true @@ -86,6 +90,8 @@ under the License. ${noServer} ${basedir}/target/server2 ${basedir}/target/classes/activemq/server2 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/clustered-static-oneway/pom.xml b/examples/features/clustered/clustered-static-oneway/pom.xml index 18a303cfb5..a787b0a189 100644 --- a/examples/features/clustered/clustered-static-oneway/pom.xml +++ b/examples/features/clustered/clustered-static-oneway/pom.xml @@ -64,6 +64,8 @@ under the License. ${noServer} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -75,6 +77,8 @@ under the License. ${noServer} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 + + -Djava.net.preferIPv4Stack=true @@ -86,6 +90,8 @@ under the License. ${noServer} ${basedir}/target/server2 ${basedir}/target/classes/activemq/server2 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/clustered-topic/pom.xml b/examples/features/clustered/clustered-topic/pom.xml index bff7c70b3e..e2bc358209 100644 --- a/examples/features/clustered/clustered-topic/pom.xml +++ b/examples/features/clustered/clustered-topic/pom.xml @@ -59,6 +59,8 @@ under the License. ${noServer} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -70,6 +72,8 @@ under the License. ${noServer} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/queue-message-redistribution/pom.xml b/examples/features/clustered/queue-message-redistribution/pom.xml index 4816ad0e98..4f01f073e3 100644 --- a/examples/features/clustered/queue-message-redistribution/pom.xml +++ b/examples/features/clustered/queue-message-redistribution/pom.xml @@ -59,6 +59,8 @@ under the License. ${noServer} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 + + -Djava.net.preferIPv4Stack=true @@ -70,6 +72,8 @@ under the License. ${noServer} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 + + -Djava.net.preferIPv4Stack=true diff --git a/examples/features/clustered/symmetric-cluster/pom.xml b/examples/features/clustered/symmetric-cluster/pom.xml index 5be9c1de77..e0b8c20e36 100644 --- a/examples/features/clustered/symmetric-cluster/pom.xml +++ b/examples/features/clustered/symmetric-cluster/pom.xml @@ -59,7 +59,7 @@ under the License. ${noSever} ${basedir}/target/server0 ${basedir}/target/classes/activemq/server0 - -Dudp-address=${udp-address} + -Dudp-address=${udp-address} -Djava.net.preferIPv4Stack=true @@ -71,7 +71,7 @@ under the License. ${noSever} ${basedir}/target/server1 ${basedir}/target/classes/activemq/server1 - -Dudp-address=${udp-address} + -Dudp-address=${udp-address} -Djava.net.preferIPv4Stack=true @@ -83,7 +83,7 @@ under the License. ${noSever} ${basedir}/target/server2 ${basedir}/target/classes/activemq/server2 - -Dudp-address=${udp-address} + -Dudp-address=${udp-address} -Djava.net.preferIPv4Stack=true @@ -95,7 +95,7 @@ under the License. ${noSever} ${basedir}/target/server3 ${basedir}/target/classes/activemq/server3 - -Dudp-address=${udp-address} + -Dudp-address=${udp-address} -Djava.net.preferIPv4Stack=true @@ -107,7 +107,7 @@ under the License. ${noSever} ${basedir}/target/server4 ${basedir}/target/classes/activemq/server4 - -Dudp-address=${udp-address} + -Dudp-address=${udp-address} -Djava.net.preferIPv4Stack=true @@ -119,7 +119,7 @@ under the License. ${noSever} ${basedir}/target/server5 ${basedir}/target/classes/activemq/server5 - -Dudp-address=${udp-address} + -Dudp-address=${udp-address} -Djava.net.preferIPv4Stack=true From 2cf0bb71c412504b42405bc918405b8af54f4412 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Tue, 1 Sep 2015 23:27:34 -0400 Subject: [PATCH 5/5] Adding chapter about UDP troubleshooting This is mostly importing some information that used to exist on old docs --- docs/user-manual/en/SUMMARY.md | 2 +- docs/user-manual/en/perf-tuning.md | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md index 923b90599f..1bb6552033 100644 --- a/docs/user-manual/en/SUMMARY.md +++ b/docs/user-manual/en/SUMMARY.md @@ -54,6 +54,6 @@ * [Protocols and Interoperability](protocols-interoperability.md) * [Tools](tools.md) * [Maven Plugin](maven-plugin.md) -* [Performance Tuning](perf-tuning.md) +* [Troubleshooting and Performance Tuning](perf-tuning.md) * [Configuration Reference](configuration-index.md) diff --git a/docs/user-manual/en/perf-tuning.md b/docs/user-manual/en/perf-tuning.md index b9de0829f5..beb387baaf 100644 --- a/docs/user-manual/en/perf-tuning.md +++ b/docs/user-manual/en/perf-tuning.md @@ -250,4 +250,23 @@ tunings won't apply to JDKs from other providers (e.g. IBM or JRockit) yourself do you really need MDBs? Can you accomplish the same task using just a normal message consumer? +## Troubleshooting + +### UDP not working + +In certain situations UDP used on discovery may not work. Typical situations are: + +1. The nodes are behind a firewall. If your nodes are on different machines then it is possible that the firewall is blocking the multicasts. you can test this by disabling the firewall for each node or adding the appropriate rules. +2. You are using a home network or are behind a gateway. Typically home networks will redirect any UDP traffic to the Internet Service Provider which is then either dropped by the ISP or just lost. To fix this you will need to add a route to the firewall/gateway that will redirect any multicast traffic back on to the local network instead. +3. All the nodes are in one machine. If this is the case then it is a similar problem to point 2 and the same solution should fix it. Alternatively you could add a multicast route to the loopback interface. On linux the command would be: +```sh +# you should run this as root +route add -net 224.0.0.0 netmask 240.0.0.0 dev lo +``` + This will redirect any traffic directed to the 224.0.0.0 to the loopback interface. This will also work if you have no network at all. + + * on Mac OS X, the command is slightly different: +```sh +sudo route add 224.0.0.0 127.0.0.1 -netmask 240.0.0.0 +```