This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch development in repository https://gitbox.apache.org/repos/asf/artemis-examples.git
commit 5b3258edf23d59c32df90afd8190e907c601c0a1 Author: Clebert Suconic <[email protected]> AuthorDate: Tue Apr 7 10:02:31 2026 -0400 renamed star mirror as mesh mirror, added diagram With the help of Claude that setup the diagram --- .../clients-layout.conf | 0 .../pom.xml | 16 ++-- .../readme.md | 32 ++++--- .../screen-clients.sh | 0 .../screen-servers.sh | 0 .../servers-layout.conf | 0 .../org/apache/artemis/jms/example/Consumer.java | 0 .../apache/artemis/jms/example/CreateServers.java | 2 +- .../jms/example/HAWithMeshMirrorExample.java} | 10 +- .../org/apache/artemis/jms/example/Producer.java | 0 .../src/main/resources/artemis/server0/broker.xml | 0 .../src/main/resources/artemis/server1/broker.xml | 0 .../src/main/resources/artemis/server2/broker.xml | 0 .../src/main/resources/images/clients-running.png | Bin .../src/main/resources/images/mesh-topology.svg | 103 +++++++++++++++++++++ .../src/main/resources/images/servers-running.png | Bin examples/features/broker-connection/pom.xml | 4 +- scripts/run-examples.sh | 2 +- 18 files changed, 141 insertions(+), 28 deletions(-) diff --git a/examples/features/broker-connection/ha-with-star-mirror/clients-layout.conf b/examples/features/broker-connection/ha-with-mesh-mirror/clients-layout.conf similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/clients-layout.conf rename to examples/features/broker-connection/ha-with-mesh-mirror/clients-layout.conf diff --git a/examples/features/broker-connection/ha-with-star-mirror/pom.xml b/examples/features/broker-connection/ha-with-mesh-mirror/pom.xml similarity index 96% rename from examples/features/broker-connection/ha-with-star-mirror/pom.xml rename to examples/features/broker-connection/ha-with-mesh-mirror/pom.xml index 64b51ca6..fe20e659 100644 --- a/examples/features/broker-connection/ha-with-star-mirror/pom.xml +++ b/examples/features/broker-connection/ha-with-mesh-mirror/pom.xml @@ -27,9 +27,9 @@ under the License. <version>2.54.0-SNAPSHOT</version> </parent> - <artifactId>ha-with-star-mirror</artifactId> + <artifactId>ha-with-mesh-mirror</artifactId> <packaging>jar</packaging> - <name>Apache Artemis Example - HA with Star Mirror</name> + <name>Apache Artemis Example - HA with Mesh Mirror</name> <properties> <activemq.basedir>${project.basedir}/../../../..</activemq.basedir> @@ -129,7 +129,7 @@ under the License. <dependencies> <dependency> <groupId>org.apache.artemis.examples.broker-connection</groupId> - <artifactId>ha-with-star-mirror</artifactId> + <artifactId>ha-with-mesh-mirror</artifactId> <version>${project.version}</version> </dependency> </dependencies> @@ -188,7 +188,7 @@ under the License. <goal>runClient</goal> </goals> <configuration> - <clientClass>org.apache.artemis.jms.example.HAWithStarMirrorExample</clientClass> + <clientClass>org.apache.artemis.jms.example.HAWithMeshMirrorExample</clientClass> <args> <param>${basedir}/target/server0</param> <param>${basedir}/target/server1</param> @@ -200,7 +200,7 @@ under the License. <dependencies> <dependency> <groupId>org.apache.artemis.examples.broker-connection</groupId> - <artifactId>ha-with-star-mirror</artifactId> + <artifactId>ha-with-mesh-mirror</artifactId> <version>${project.version}</version> </dependency> </dependencies> @@ -233,7 +233,7 @@ under the License. <dependencies> <dependency> <groupId>org.apache.artemis.examples.broker-connection</groupId> - <artifactId>ha-with-star-mirror</artifactId> + <artifactId>ha-with-mesh-mirror</artifactId> <version>${project.version}</version> </dependency> </dependencies> @@ -262,7 +262,7 @@ under the License. <dependencies> <dependency> <groupId>org.apache.artemis.examples.broker-connection</groupId> - <artifactId>ha-with-star-mirror</artifactId> + <artifactId>ha-with-mesh-mirror</artifactId> <version>${project.version}</version> </dependency> </dependencies> @@ -291,7 +291,7 @@ under the License. <dependencies> <dependency> <groupId>org.apache.artemis.examples.broker-connection</groupId> - <artifactId>ha-with-star-mirror</artifactId> + <artifactId>ha-with-mesh-mirror</artifactId> <version>${project.version}</version> </dependency> </dependencies> diff --git a/examples/features/broker-connection/ha-with-star-mirror/readme.md b/examples/features/broker-connection/ha-with-mesh-mirror/readme.md similarity index 88% rename from examples/features/broker-connection/ha-with-star-mirror/readme.md rename to examples/features/broker-connection/ha-with-mesh-mirror/readme.md index b9599fd2..21e88b8b 100644 --- a/examples/features/broker-connection/ha-with-star-mirror/readme.md +++ b/examples/features/broker-connection/ha-with-mesh-mirror/readme.md @@ -1,18 +1,28 @@ -# High Availability with Star Mirror and Distributed Locks +# High Availability with Mesh Mirror and Distributed Locks -This example demonstrates how to achieve high availability (HA) using star topology mirroring combined with distributed locks from the Lock Coordinator feature. The distributed locks ensure that only one broker accepts client connections at a time, providing automatic failover without split-brain scenarios across three brokers. +This example demonstrates how to achieve high availability (HA) using mesh topology mirroring combined with distributed locks from the Lock Coordinator feature. The distributed locks ensure that only one broker accepts client connections at a time, providing automatic failover without split-brain scenarios across three brokers. ## Overview This example configures three brokers (server0, server1, and server2) that: -- Mirror all messaging operations to each other using broker connections in a star topology +- Mirror all messaging operations to each other using broker connections in a mesh topology - Share a distributed file-based lock to coordinate which broker accepts client connections - Automatically failover client connections when the active broker fails - Use lock coordinator on broker connections to ensure mirroring only happens when the broker is active +## Topology Diagram + + + +**Key Points:** +- Only Server 0 (holding the lock) actively mirrors data to Server 1 and Server 2 (solid blue arrows) +- Server 1 and Server 2 have passive broker connections (dashed gray arrows - not actively mirroring) +- When Server 0 fails, Server 1 or Server 2 acquires the lock and becomes active +- The new active server's connections become active and start mirroring + ## How It Works -### Star Topology Mirroring Configuration +### Mesh Topology Mirroring Configuration All three brokers are configured with mirroring to the other two brokers using AMQP broker connections. The key feature is using the **lock-coordinator attribute on broker connections**, which ensures that mirroring only happens when the broker holding the lock is active. @@ -54,7 +64,7 @@ All three brokers are configured with mirroring to the other two brokers using A </broker-connections> ``` -This ensures that messages, queues, and other operations are replicated across all three brokers in a star topology. +This ensures that messages, queues, and other operations are replicated across all three brokers in a mesh topology. ### Lock Coordinator for HA @@ -64,7 +74,7 @@ The key feature of this example is the use of **distributed locks** to control w <lock-coordinators> <lock-coordinator name="clients-lock"> <class-name>org.apache.activemq.artemis.lockmanager.file.FileBasedLockManager</class-name> - <lock-id>star-mirror-cluster-clients</lock-id> + <lock-id>mesh-mirror-cluster-clients</lock-id> <check-period>1000</check-period> <properties> <property key="locks-folder" value="/path/to/shared/locks"/> @@ -97,7 +107,7 @@ When the active broker (holding the lock) fails: 1. The lock is automatically released 2. One of the backup brokers acquires the lock and starts accepting connections 3. The client automatically reconnects to the now-active broker -4. All messages are available due to star mirroring +4. All messages are available due to mesh mirroring ## Setup @@ -107,7 +117,7 @@ You have the following options to run this example: ### Non-interactive way -You can run this example in a non-interactive way, with HAWithStarMirrorExample starting, stopping the servers, and consume messages from your servers during failover. +You can run this example in a non-interactive way, with HAWithMeshMirrorExample starting, stopping the servers, and consume messages from your servers during failover. ```shell mvn verify -Pautomated @@ -206,7 +216,7 @@ To observe the high availability in action: ## Example Flow -1. All three brokers start with star mirroring configured +1. All three brokers start with mesh mirroring configured 2. One broker (typically server0) acquires the distributed lock and accepts client connections 3. The client connects and sends 30 messages to a queue 4. Server0 is killed (simulating a failure) @@ -220,7 +230,7 @@ The lock coordinator supports different lock types (file-based, ZooKeeper). This The `check-period` parameter (in milliseconds) controls how frequently the lock holder verifies it still owns the lock, affecting how quickly failover occurs when a broker crashes. -**Important:** This example demonstrates the star topology with lock coordinator on broker connections. Unlike the dual mirror example, the lock-coordinator attribute is specified on the broker connections themselves, ensuring that mirroring only occurs when a broker holds the lock. This prevents multiple brokers from simultaneously trying to mirror to each other when they don't have the client lock. +**Important:** This example demonstrates the mesh topology with lock coordinator on broker connections. Unlike the dual mirror example, the lock-coordinator attribute is specified on the broker connections themselves, ensuring that mirroring only occurs when a broker holds the lock. This prevents multiple brokers from simultaneously trying to mirror to each other when they don't have the client lock. ## Change the configuration to ZooKeeper @@ -230,7 +240,7 @@ If you want to try ZooKeeper, you need to change the lock-coordinator configurat <lock-coordinators> <lock-coordinator name="clients-lock"> <class-name>org.apache.activemq.artemis.lockmanager.zookeeper.CuratorDistributedLockManager</class-name> - <lock-id>star-mirror-cluster-clients</lock-id> + <lock-id>mesh-mirror-cluster-clients</lock-id> <check-period>1000</check-period> <properties> diff --git a/examples/features/broker-connection/ha-with-star-mirror/screen-clients.sh b/examples/features/broker-connection/ha-with-mesh-mirror/screen-clients.sh similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/screen-clients.sh rename to examples/features/broker-connection/ha-with-mesh-mirror/screen-clients.sh diff --git a/examples/features/broker-connection/ha-with-star-mirror/screen-servers.sh b/examples/features/broker-connection/ha-with-mesh-mirror/screen-servers.sh similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/screen-servers.sh rename to examples/features/broker-connection/ha-with-mesh-mirror/screen-servers.sh diff --git a/examples/features/broker-connection/ha-with-star-mirror/servers-layout.conf b/examples/features/broker-connection/ha-with-mesh-mirror/servers-layout.conf similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/servers-layout.conf rename to examples/features/broker-connection/ha-with-mesh-mirror/servers-layout.conf diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/Consumer.java b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/Consumer.java similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/Consumer.java rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/Consumer.java diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/CreateServers.java b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/CreateServers.java similarity index 94% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/CreateServers.java rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/CreateServers.java index ce45614d..c0066aee 100644 --- a/examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/CreateServers.java +++ b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/CreateServers.java @@ -21,6 +21,6 @@ package org.apache.artemis.jms.example; */ public class CreateServers { public static void main(final String[] args) throws Exception { - HAWithStarMirrorExample.configureLocksFolder(args); + HAWithMeshMirrorExample.configureLocksFolder(args); } } diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/HAWithStarMirrorExample.java b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/HAWithMeshMirrorExample.java similarity index 93% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/HAWithStarMirrorExample.java rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/HAWithMeshMirrorExample.java index 3a7ff9ef..937e0648 100644 --- a/examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/HAWithStarMirrorExample.java +++ b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/HAWithMeshMirrorExample.java @@ -30,9 +30,9 @@ import org.apache.activemq.artemis.util.ServerUtil; import org.apache.activemq.artemis.utils.FileUtil; /** - * Example of star topology mirroring with three servers using lock coordinator on broker connections + * Example of mesh topology mirroring with three servers using lock coordinator on broker connections */ -public class HAWithStarMirrorExample { +public class HAWithMeshMirrorExample { private static Process server0; @@ -51,11 +51,11 @@ public class HAWithStarMirrorExample { try { // Start the three servers - server0 = ServerUtil.startServer(args[0], HAWithStarMirrorExample.class.getSimpleName() + "-peer0", 0, 0); + server0 = ServerUtil.startServer(args[0], HAWithMeshMirrorExample.class.getSimpleName() + "-peer0", 0, 0); Thread.sleep(2_000); - server1 = ServerUtil.startServer(args[1], HAWithStarMirrorExample.class.getSimpleName() + "-peer1", 1, 0); + server1 = ServerUtil.startServer(args[1], HAWithMeshMirrorExample.class.getSimpleName() + "-peer1", 1, 0); Thread.sleep(2_000); - server2 = ServerUtil.startServer(args[2], HAWithStarMirrorExample.class.getSimpleName() + "-peer2", 2, 0); + server2 = ServerUtil.startServer(args[2], HAWithMeshMirrorExample.class.getSimpleName() + "-peer2", 2, 0); // We connect to the broker holding the lock on the distributed lock ConnectionFactory factory = new org.apache.qpid.jms.JmsConnectionFactory( diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/Producer.java b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/Producer.java similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/java/org/apache/artemis/jms/example/Producer.java rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/java/org/apache/artemis/jms/example/Producer.java diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/resources/artemis/server0/broker.xml b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/artemis/server0/broker.xml similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/resources/artemis/server0/broker.xml rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/artemis/server0/broker.xml diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/resources/artemis/server1/broker.xml b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/artemis/server1/broker.xml similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/resources/artemis/server1/broker.xml rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/artemis/server1/broker.xml diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/resources/artemis/server2/broker.xml b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/artemis/server2/broker.xml similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/resources/artemis/server2/broker.xml rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/artemis/server2/broker.xml diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/resources/images/clients-running.png b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/images/clients-running.png similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/resources/images/clients-running.png rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/images/clients-running.png diff --git a/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/images/mesh-topology.svg b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/images/mesh-topology.svg new file mode 100644 index 00000000..a8fe10a5 --- /dev/null +++ b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/images/mesh-topology.svg @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600" width="800" height="600"> + <defs> + <!-- Define arrow markers --> + <marker id="arrowActive" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth"> + <path d="M0,0 L0,6 L9,3 z" fill="#2563eb" /> + </marker> + <marker id="arrowPassive" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth"> + <path d="M0,0 L0,6 L9,3 z" fill="#94a3b8" /> + </marker> + </defs> + + <!-- Title --> + <text x="400" y="30" text-anchor="middle" font-size="24" font-weight="bold" font-family="Arial, sans-serif" fill="#1e293b"> + Mesh Topology with Lock Coordinator + </text> + + <!-- Server 0 (Active) --> + <g id="server0"> + <rect x="300" y="80" width="200" height="120" rx="10" fill="#3b82f6" stroke="#1e40af" stroke-width="3"/> + <text x="400" y="110" text-anchor="middle" font-size="18" font-weight="bold" font-family="Arial, sans-serif" fill="#ffffff"> + Server 0 (ACTIVE) + </text> + <text x="400" y="135" text-anchor="middle" font-size="14" font-family="Arial, sans-serif" fill="#dbeafe"> + Port: 61616 + </text> + <text x="400" y="155" text-anchor="middle" font-size="16" font-family="Arial, sans-serif" fill="#fbbf24"> + 🔒 Has Lock + </text> + <text x="400" y="180" text-anchor="middle" font-size="12" font-family="Arial, sans-serif" fill="#dbeafe"> + Accepts Client Connections + </text> + </g> + + <!-- Server 1 (Passive) --> + <g id="server1"> + <rect x="80" y="400" width="200" height="120" rx="10" fill="#94a3b8" stroke="#475569" stroke-width="3"/> + <text x="180" y="430" text-anchor="middle" font-size="18" font-weight="bold" font-family="Arial, sans-serif" fill="#ffffff"> + Server 1 (PASSIVE) + </text> + <text x="180" y="455" text-anchor="middle" font-size="14" font-family="Arial, sans-serif" fill="#f1f5f9"> + Port: 61617 + </text> + <text x="180" y="480" text-anchor="middle" font-size="14" font-family="Arial, sans-serif" fill="#f1f5f9"> + No Lock + </text> + <text x="180" y="500" text-anchor="middle" font-size="11" font-family="Arial, sans-serif" fill="#f1f5f9"> + Waiting for Lock + </text> + </g> + + <!-- Server 2 (Passive) --> + <g id="server2"> + <rect x="520" y="400" width="200" height="120" rx="10" fill="#94a3b8" stroke="#475569" stroke-width="3"/> + <text x="620" y="430" text-anchor="middle" font-size="18" font-weight="bold" font-family="Arial, sans-serif" fill="#ffffff"> + Server 2 (PASSIVE) + </text> + <text x="620" y="455" text-anchor="middle" font-size="14" font-family="Arial, sans-serif" fill="#f1f5f9"> + Port: 61618 + </text> + <text x="620" y="480" text-anchor="middle" font-size="14" font-family="Arial, sans-serif" fill="#f1f5f9"> + No Lock + </text> + <text x="620" y="500" text-anchor="middle" font-size="11" font-family="Arial, sans-serif" fill="#f1f5f9"> + Waiting for Lock + </text> + </g> + + <!-- Active connections from Server 0 --> + <!-- Server 0 to Server 1 --> + <path d="M 350 200 L 220 400" stroke="#2563eb" stroke-width="4" fill="none" marker-end="url(#arrowActive)"/> + <text x="260" y="280" font-size="13" font-weight="bold" font-family="Arial, sans-serif" fill="#2563eb"> + Active Mirror + </text> + + <!-- Server 0 to Server 2 --> + <path d="M 450 200 L 580 400" stroke="#2563eb" stroke-width="4" fill="none" marker-end="url(#arrowActive)"/> + <text x="500" y="280" font-size="13" font-weight="bold" font-family="Arial, sans-serif" fill="#2563eb"> + Active Mirror + </text> + + <!-- Passive connections (dashed) --> + <!-- Server 1 to Server 2 --> + <path d="M 280 460 L 520 460" stroke="#94a3b8" stroke-width="3" fill="none" stroke-dasharray="8,4" marker-end="url(#arrowPassive)"/> + <text x="400" y="485" text-anchor="middle" font-size="12" font-family="Arial, sans-serif" fill="#64748b"> + Passive Mirror + </text> + + <!-- Server 2 to Server 1 --> + <path d="M 520 480 L 280 480" stroke="#94a3b8" stroke-width="3" fill="none" stroke-dasharray="8,4" marker-end="url(#arrowPassive)"/> + + <!-- Server 1 to Server 0 --> + <path d="M 240 400 L 340 200" stroke="#94a3b8" stroke-width="3" fill="none" stroke-dasharray="8,4" marker-end="url(#arrowPassive)"/> + <text x="260" y="320" font-size="12" font-family="Arial, sans-serif" fill="#64748b"> + Passive + </text> + + <!-- Server 2 to Server 0 --> + <path d="M 560 400 L 460 200" stroke="#94a3b8" stroke-width="3" fill="none" stroke-dasharray="8,4" marker-end="url(#arrowPassive)"/> + <text x="540" y="320" font-size="12" font-family="Arial, sans-serif" fill="#64748b"> + Passive + </text> +</svg> diff --git a/examples/features/broker-connection/ha-with-star-mirror/src/main/resources/images/servers-running.png b/examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/images/servers-running.png similarity index 100% rename from examples/features/broker-connection/ha-with-star-mirror/src/main/resources/images/servers-running.png rename to examples/features/broker-connection/ha-with-mesh-mirror/src/main/resources/images/servers-running.png diff --git a/examples/features/broker-connection/pom.xml b/examples/features/broker-connection/pom.xml index d9ee1627..a1fb794f 100644 --- a/examples/features/broker-connection/pom.xml +++ b/examples/features/broker-connection/pom.xml @@ -63,7 +63,7 @@ under the License. <module>amqp-bridge</module> <module>disaster-recovery</module> <module>ha-with-dual-mirror</module> - <module>ha-with-star-mirror</module> + <module>ha-with-mesh-mirror</module> </modules> </profile> <profile> @@ -85,7 +85,7 @@ under the License. <module>amqp-bridge</module> <module>disaster-recovery</module> <module>ha-with-dual-mirror</module> - <module>ha-with-star-mirror</module> + <module>ha-with-mesh-mirror</module> </modules> </profile> </profiles> diff --git a/scripts/run-examples.sh b/scripts/run-examples.sh index 74748d50..8b23e226 100755 --- a/scripts/run-examples.sh +++ b/scripts/run-examples.sh @@ -185,7 +185,7 @@ cd amqp-federation-queue-multiple-brokers; mvn verify; cd .. cd amqp-federation-queue-pull-messages; mvn verify; cd .. cd amqp-bridge; mvn verify; cd .. cd ha-with-dual-mirror; mvn verify -Pautomated; cd .. -cd ha-with-star-mirror; mvn verify -Pautomated; cd .. +cd ha-with-mesh-mirror; mvn verify -Pautomated; cd .. cd $ARTEMIS_EXAMPLES_ROOT/examples/features/sub-modules/ cd queue-artemis-jakarta-client-all; mvn verify; cd .. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
