You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2022/08/16 20:26:34 UTC

[camel] branch main updated: Convert persistent JMS tests to the test-infra

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 23edb9f61ef Convert persistent JMS tests to the test-infra
23edb9f61ef is described below

commit 23edb9f61ef2c546e865e8bd599625543d6a2550
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Aug 16 17:27:16 2022 +0200

    Convert persistent JMS tests to the test-infra
---
 .../component/jms/AbstractPersistentJMSTest.java   | 33 +++++++++++
 .../jms/ConsumerTemplateJmsSelectorTest.java       |  8 +--
 .../component/jms/JmsAsyncStartListenerTest.java   |  6 +-
 .../jms/JmsAsyncStartStopListenerTest.java         |  5 +-
 .../camel/component/jms/JmsAutoStartupTest.java    |  6 +-
 .../component/jms/JmsConsumeTemplateTest.java      |  3 +-
 .../jms/JmsDeadLetterChannelInOutTest.java         |  6 +-
 .../camel/component/jms/JmsDurableTopicTest.java   |  9 ++-
 .../jms/JmsProducerDisableReplyToTest.java         |  6 +-
 .../jms/JmsRouteDeliveryModePreserveQoSTest.java   | 49 +++++++++-------
 ...BodyNullErrorHandlerUseOriginalMessageTest.java | 10 ++--
 .../camel/component/jms/JmsSuspendResumeTest.java  | 15 +++--
 .../jms/JmsThrottlingInflightRoutePolicyTest.java  |  6 +-
 .../camel/component/jms/JmsToDSendDynamicTest.java | 15 +++--
 .../jms/JmsToDSendDynamicTwoDisabledTest.java      |  6 +-
 .../component/jms/JmsToDSendDynamicTwoTest.java    | 11 ++--
 .../component/jms/ManagedJmsEndpointTest.java      |  6 +-
 .../component/jms/TwoConsumerOnSameQueueTest.java  | 21 +++----
 .../component/jms/TwoConsumerOnSameTopicTest.java  | 26 +++++----
 .../jms/async/AsyncConsumerInOutTest.java          | 13 ++---
 .../jms/issues/JmsDirectStartupOrderIssueTest.java |  8 +--
 .../services/ActiveMQEmbeddedServiceBuilder.java   | 18 ++++++
 .../services/ActiveMQPersistentVMService.java      | 68 ++++++++++++++++++++++
 .../activemq/services/ActiveMQServiceFactory.java  | 24 ++++++++
 24 files changed, 262 insertions(+), 116 deletions(-)

diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/AbstractPersistentJMSTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/AbstractPersistentJMSTest.java
new file mode 100644
index 00000000000..36b8b9af3bf
--- /dev/null
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/AbstractPersistentJMSTest.java
@@ -0,0 +1,33 @@
+/*
+ * 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.camel.component.jms;
+
+import org.apache.camel.test.infra.activemq.services.ActiveMQService;
+import org.apache.camel.test.infra.activemq.services.ActiveMQServiceFactory;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Tags;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+@Tags({ @Tag("jms") })
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public abstract class AbstractPersistentJMSTest extends CamelTestSupport {
+    @RegisterExtension
+    public static ActiveMQService service = ActiveMQServiceFactory.createPersistentVMService();
+}
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ConsumerTemplateJmsSelectorTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ConsumerTemplateJmsSelectorTest.java
index 78584b1737b..822c2ab16dd 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ConsumerTemplateJmsSelectorTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ConsumerTemplateJmsSelectorTest.java
@@ -19,13 +19,13 @@ package org.apache.camel.component.jms;
 import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentTransacted;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class ConsumerTemplateJmsSelectorTest extends CamelTestSupport {
+public class ConsumerTemplateJmsSelectorTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testJmsSelector() {
@@ -46,8 +46,8 @@ public class ConsumerTemplateJmsSelectorTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
 
-        // must be persistent to rember the messages
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        // must be persistent to remember the messages
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         JmsComponent component = jmsComponentTransacted(connectionFactory);
         camelContext.addComponent("activemq", component);
         return camelContext;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartListenerTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartListenerTest.java
index 476c654c3bf..7a698a802f0 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartListenerTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartListenerTest.java
@@ -21,7 +21,7 @@ import javax.jms.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
@@ -29,7 +29,7 @@ import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknow
 /**
  * Testing with async start listener
  */
-public class JmsAsyncStartListenerTest extends CamelTestSupport {
+public class JmsAsyncStartListenerTest extends AbstractPersistentJMSTest {
 
     protected String componentName = "activemq";
 
@@ -50,7 +50,7 @@ public class JmsAsyncStartListenerTest extends CamelTestSupport {
 
         // use a persistent queue as the consumer is started asynchronously
         // so we need a persistent store in case no active consumers when we send the messages
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         JmsComponent jms = jmsComponentAutoAcknowledge(connectionFactory);
         jms.getConfiguration().setAsyncStartListener(true);
         camelContext.addComponent(componentName, jms);
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java
index 71e4d0161d0..c6123bb15b4 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java
@@ -21,6 +21,7 @@ import javax.jms.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
@@ -28,7 +29,7 @@ import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknow
 /**
  * Testing with async start listener
  */
-public class JmsAsyncStartStopListenerTest extends AbstractJMSTest {
+public class JmsAsyncStartStopListenerTest extends AbstractPersistentJMSTest {
 
     protected String componentName = "activemq";
 
@@ -49,7 +50,7 @@ public class JmsAsyncStartStopListenerTest extends AbstractJMSTest {
 
         // use a persistent queue as the consumer is started asynchronously
         // so we need a persistent store in case no active consumers when we send the messages
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         JmsComponent jms = jmsComponentAutoAcknowledge(connectionFactory);
         jms.getConfiguration().setAsyncStartListener(true);
         jms.getConfiguration().setAsyncStopListener(true);
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAutoStartupTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAutoStartupTest.java
index f621689ee06..df70283e5ea 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAutoStartupTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAutoStartupTest.java
@@ -24,14 +24,14 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Service;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
+import static org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper.createConnectionFactory;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 
-public class JmsAutoStartupTest extends CamelTestSupport {
+public class JmsAutoStartupTest extends AbstractPersistentJMSTest {
 
     private JmsEndpoint endpoint;
 
@@ -77,7 +77,7 @@ public class JmsAutoStartupTest extends CamelTestSupport {
         CamelContext camelContext = super.createCamelContext();
 
         // must use persistent so the message is not lost
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return camelContext;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsConsumeTemplateTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsConsumeTemplateTest.java
index d9f438d0b97..f85f114ea0d 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsConsumeTemplateTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsConsumeTemplateTest.java
@@ -19,13 +19,12 @@ package org.apache.camel.component.jms;
 import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class JmsConsumeTemplateTest extends CamelTestSupport {
+public class JmsConsumeTemplateTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testConsumeTemplate() {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterChannelInOutTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterChannelInOutTest.java
index d11bf1013b4..c7cb6200632 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterChannelInOutTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterChannelInOutTest.java
@@ -22,14 +22,14 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-public class JmsDeadLetterChannelInOutTest extends CamelTestSupport {
+public class JmsDeadLetterChannelInOutTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testJmsDLCInOut() {
@@ -51,7 +51,7 @@ public class JmsDeadLetterChannelInOutTest extends CamelTestSupport {
 
         // must be persistent so the consumer can receive the message as we receive AFTER the message
         // has been published
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return camelContext;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDurableTopicTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDurableTopicTest.java
index bae10dcf7b4..7d3fa50fbc4 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDurableTopicTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDurableTopicTest.java
@@ -23,13 +23,12 @@ import javax.jms.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 
-public class JmsDurableTopicTest extends CamelTestSupport {
+public class JmsDurableTopicTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testDurableTopic() {
@@ -41,7 +40,7 @@ public class JmsDurableTopicTest extends CamelTestSupport {
 
         Awaitility.await().atMost(2, TimeUnit.SECONDS)
                 .untilAsserted(() -> {
-                    template.sendBody("activemq:topic:foo", "Hello World");
+                    template.sendBody("activemq:topic:JmsDurableTopicTest", "Hello World");
                     assertMockEndpointsSatisfied();
                 });
     }
@@ -59,10 +58,10 @@ public class JmsDurableTopicTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("activemq:topic:foo?clientId=123&durableSubscriptionName=bar")
+                from("activemq:topic:JmsDurableTopicTest?clientId=123&durableSubscriptionName=bar")
                         .to("mock:result");
 
-                from("activemq:topic:foo?clientId=456&durableSubscriptionName=bar")
+                from("activemq:topic:JmsDurableTopicTest?clientId=456&durableSubscriptionName=bar")
                         .to("mock:result2");
             }
         };
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerDisableReplyToTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerDisableReplyToTest.java
index b383e3c9a62..6d62da6e0a6 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerDisableReplyToTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerDisableReplyToTest.java
@@ -19,13 +19,13 @@ package org.apache.camel.component.jms;
 import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class JmsProducerDisableReplyToTest extends CamelTestSupport {
+public class JmsProducerDisableReplyToTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testProducerDisableReplyTo() {
@@ -45,7 +45,7 @@ public class JmsProducerDisableReplyToTest extends CamelTestSupport {
 
         // must be persistent so the consumer can receive the message as we receive AFTER the message
         // has been published
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return camelContext;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java
index 9134c1572f2..d5500fa3348 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java
@@ -24,7 +24,6 @@ import javax.jms.DeliveryMode;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
@@ -34,14 +33,14 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 /**
  * Unit test for preserveMessageQos with delivery mode
  */
-public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
+public class JmsRouteDeliveryModePreserveQoSTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testSendDefault() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Hello World");
 
-        template.sendBody("activemq:queue:foo?preserveMessageQos=true", "Hello World");
+        template.sendBody("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.foo?preserveMessageQos=true", "Hello World");
 
         assertMockEndpointsSatisfied();
 
@@ -53,10 +52,11 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
 
     @Test
     public void testSendNonPersistent() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Hello World");
 
-        template.sendBodyAndHeader("activemq:queue:foo?preserveMessageQos=true", "Hello World", "JMSDeliveryMode",
+        template.sendBodyAndHeader("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.foo?preserveMessageQos=true",
+                "Hello World", "JMSDeliveryMode",
                 DeliveryMode.NON_PERSISTENT);
 
         assertMockEndpointsSatisfied();
@@ -69,10 +69,11 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
 
     @Test
     public void testSendNonPersistentAsString() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Hello World");
 
-        template.sendBodyAndHeader("activemq:queue:foo?preserveMessageQos=true", "Hello World", "JMSDeliveryMode",
+        template.sendBodyAndHeader("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.foo?preserveMessageQos=true",
+                "Hello World", "JMSDeliveryMode",
                 "NON_PERSISTENT");
 
         assertMockEndpointsSatisfied();
@@ -85,10 +86,11 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
 
     @Test
     public void testSendPersistent() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Hello World");
 
-        template.sendBodyAndHeader("activemq:queue:foo?preserveMessageQos=true", "Hello World", "JMSDeliveryMode",
+        template.sendBodyAndHeader("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.foo?preserveMessageQos=true",
+                "Hello World", "JMSDeliveryMode",
                 DeliveryMode.PERSISTENT);
 
         assertMockEndpointsSatisfied();
@@ -101,10 +103,11 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
 
     @Test
     public void testSendPersistentAsString() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Hello World");
 
-        template.sendBodyAndHeader("activemq:queue:foo?preserveMessageQos=true", "Hello World", "JMSDeliveryMode",
+        template.sendBodyAndHeader("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.foo?preserveMessageQos=true",
+                "Hello World", "JMSDeliveryMode",
                 "PERSISTENT");
 
         assertMockEndpointsSatisfied();
@@ -117,7 +120,7 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
 
     @Test
     public void testNonJmsDeliveryMode() throws InterruptedException {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Beer is good...");
 
         // since we're using activemq, we really cannot set a delivery mode to something other
@@ -136,7 +139,7 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
 
     @Test
     public void testNonJmsDeliveryModeDisableExplicityQos() throws InterruptedException {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Beer is good...");
 
         // in this test, we're using explicitQosEnabled=false so we will not rely on our
@@ -151,7 +154,7 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
 
     @Test
     public void testNonJmsDeliveryModePreserveQos() throws InterruptedException {
-        MockEndpoint mock = getMockEndpoint("mock:bar");
+        MockEndpoint mock = getMockEndpoint("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
         mock.expectedBodiesReceived("Beer is good...");
 
         // in this test, we can only pass if we are "preserving" existing deliveryMode.
@@ -183,15 +186,17 @@ public class JmsRouteDeliveryModePreserveQoSTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("activemq:queue:foo")
-                        .to("activemq:queue:bar?preserveMessageQos=true");
+                from("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.foo")
+                        .to("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.bar?preserveMessageQos=true");
 
-                from("activemq:queue:bar")
-                        .to("mock:bar");
+                from("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.bar")
+                        .to("mock:JmsRouteDeliveryModePreserveQoSTest.bar");
 
-                from("direct:nonJmsDeliveryMode").to("activemq:queue:bar?deliveryMode=3");
-                from("direct:noExplicitNonJmsDeliveryMode").to("activemq:queue:bar?deliveryMode=3&explicitQosEnabled=false");
-                from("direct:preserveQosNonJmsDeliveryMode").to("activemq:queue:bar?preserveMessageQos=true");
+                from("direct:nonJmsDeliveryMode").to("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.bar?deliveryMode=3");
+                from("direct:noExplicitNonJmsDeliveryMode")
+                        .to("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.bar?deliveryMode=3&explicitQosEnabled=false");
+                from("direct:preserveQosNonJmsDeliveryMode")
+                        .to("activemq:queue:JmsRouteDeliveryModePreserveQoSTest.bar?preserveMessageQos=true");
             }
         };
     }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSetBodyNullErrorHandlerUseOriginalMessageTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSetBodyNullErrorHandlerUseOriginalMessageTest.java
index 29693105455..c3dc6ca1d74 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSetBodyNullErrorHandlerUseOriginalMessageTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSetBodyNullErrorHandlerUseOriginalMessageTest.java
@@ -20,18 +20,18 @@ import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class JmsSetBodyNullErrorHandlerUseOriginalMessageTest extends CamelTestSupport {
+public class JmsSetBodyNullErrorHandlerUseOriginalMessageTest extends AbstractPersistentJMSTest {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
         return camelContext;
     }
@@ -42,7 +42,7 @@ public class JmsSetBodyNullErrorHandlerUseOriginalMessageTest extends CamelTestS
         getMockEndpoint("mock:bar").expectedMessageCount(1);
         getMockEndpoint("mock:bar").message(0).body().isNull();
 
-        template.sendBody("activemq:queue:foo", "Hello World");
+        template.sendBody("activemq:queue:JmsSetBodyNullErrorHandlerUseOriginalMessageTest", "Hello World");
 
         assertMockEndpointsSatisfied();
 
@@ -57,7 +57,7 @@ public class JmsSetBodyNullErrorHandlerUseOriginalMessageTest extends CamelTestS
             public void configure() {
                 errorHandler(deadLetterChannel("activemq:queue:dead").useOriginalMessage());
 
-                from("activemq:queue:foo")
+                from("activemq:queue:JmsSetBodyNullErrorHandlerUseOriginalMessageTest")
                         .to("mock:foo")
                         .process(exchange -> {
                             // an end user may set the message body explicit to null
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSuspendResumeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSuspendResumeTest.java
index 3a27af01e1f..7f1ab98d2d8 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSuspendResumeTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSuspendResumeTest.java
@@ -23,23 +23,22 @@ import javax.jms.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 
-public class JmsSuspendResumeTest extends CamelTestSupport {
+public class JmsSuspendResumeTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testSuspendResume() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:foo");
+        MockEndpoint mock = getMockEndpoint("mock:JmsSuspendResumeTest");
         mock.expectedBodiesReceived("Hello World");
 
-        template.sendBody("activemq:queue:foo", "Hello World");
+        template.sendBody("activemq:queue:JmsSuspendResumeTest", "Hello World");
 
         assertMockEndpointsSatisfied();
 
-        context.getRouteController().suspendRoute("foo");
+        context.getRouteController().suspendRoute("JmsSuspendResumeTest");
 
         resetMocks();
         mock.expectedMessageCount(0);
@@ -47,14 +46,14 @@ public class JmsSuspendResumeTest extends CamelTestSupport {
         // sleep a bit to ensure its properly suspended
         Thread.sleep(2000);
 
-        template.sendBody("activemq:queue:foo", "Bye World");
+        template.sendBody("activemq:queue:JmsSuspendResumeTest", "Bye World");
 
         assertMockEndpointsSatisfied(1, TimeUnit.SECONDS);
 
         resetMocks();
         mock.expectedBodiesReceived("Bye World");
 
-        context.getRouteController().resumeRoute("foo");
+        context.getRouteController().resumeRoute("JmsSuspendResumeTest");
 
         assertMockEndpointsSatisfied();
     }
@@ -74,7 +73,7 @@ public class JmsSuspendResumeTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from("activemq:queue:foo").routeId("foo").to("mock:foo");
+                from("activemq:queue:JmsSuspendResumeTest").routeId("JmsSuspendResumeTest").to("mock:JmsSuspendResumeTest");
             }
         };
     }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java
index 8c57cecdb49..c72c32be904 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java
@@ -21,13 +21,13 @@ import javax.jms.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentTransacted;
 
-public class JmsThrottlingInflightRoutePolicyTest extends CamelTestSupport {
+public class JmsThrottlingInflightRoutePolicyTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testJmsThrottlingInflightRoutePolicy() throws Exception {
@@ -63,7 +63,7 @@ public class JmsThrottlingInflightRoutePolicyTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
 
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentTransacted(connectionFactory));
 
         // and use another component for sender
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java
index 9255f095d25..55b88898a15 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTest.java
@@ -20,34 +20,33 @@ import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class JmsToDSendDynamicTest extends CamelTestSupport {
+public class JmsToDSendDynamicTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testToD() {
-        template.sendBodyAndHeader("direct:start", "Hello bar", "where", "bar");
-        template.sendBodyAndHeader("direct:start", "Hello beer", "where", "beer");
+        template.sendBodyAndHeader("direct:start", "Hello bar", "where", "JmsToDSendDynamicTest.bar");
+        template.sendBodyAndHeader("direct:start", "Hello beer", "where", "JmsToDSendDynamicTest.beer");
 
         // there should only be one activemq endpoint
         long count = context.getEndpoints().stream().filter(e -> e.getEndpointUri().startsWith("activemq:")).count();
         assertEquals(1, count, "There should only be 1 activemq endpoint");
 
         // and the messages should be in the queues
-        String out = consumer.receiveBody("activemq:queue:bar", 2000, String.class);
+        String out = consumer.receiveBody("activemq:queue:JmsToDSendDynamicTest.bar", 2000, String.class);
         assertEquals("Hello bar", out);
-        out = consumer.receiveBody("activemq:queue:beer", 2000, String.class);
+        out = consumer.receiveBody("activemq:queue:JmsToDSendDynamicTest.beer", 2000, String.class);
         assertEquals("Hello beer", out);
     }
 
     @Test
     public void testToDSlashed() {
-        template.sendBodyAndHeader("direct:startSlashed", "Hello bar", "where", "bar");
-        String out = consumer.receiveBody("activemq://bar", 2000, String.class);
+        template.sendBodyAndHeader("direct:startSlashed", "Hello bar", "where", "JmsToDSendDynamicTest.bar");
+        String out = consumer.receiveBody("activemq://JmsToDSendDynamicTest.bar", 2000, String.class);
         assertEquals("Hello bar", out);
     }
 
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoDisabledTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoDisabledTest.java
index 3081d5d4e61..97dddad6ddb 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoDisabledTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoDisabledTest.java
@@ -20,13 +20,13 @@ import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class JmsToDSendDynamicTwoDisabledTest extends CamelTestSupport {
+public class JmsToDSendDynamicTwoDisabledTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testToD() {
@@ -46,7 +46,7 @@ public class JmsToDSendDynamicTwoDisabledTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
 
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return camelContext;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoTest.java
index bc0bf0cf234..409cb9f9d82 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsToDSendDynamicTwoTest.java
@@ -20,21 +20,20 @@ import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class JmsToDSendDynamicTwoTest extends CamelTestSupport {
+public class JmsToDSendDynamicTwoTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testToD() {
-        template.sendBodyAndHeader("direct:start", "Hello bar", "where", "bar");
-        template.sendBodyAndHeader("direct:start", "Hello beer", "where", "beer");
-        template.sendBodyAndHeader("direct:start", "Hello gin", "where", "gin");
+        template.sendBodyAndHeader("direct:start", "Hello bar", "where", "JmsToDSendDynamicTwoTest.bar");
+        template.sendBodyAndHeader("direct:start", "Hello beer", "where", "JmsToDSendDynamicTwoTest.beer");
+        template.sendBodyAndHeader("direct:start", "Hello gin", "where", "JmsToDSendDynamicTwoTest.gin");
 
-        template.sendBodyAndHeader("direct:start2", "Hello beer", "where2", "beer");
+        template.sendBodyAndHeader("direct:start2", "Hello beer", "where2", "JmsToDSendDynamicTwoTest.beer");
         template.sendBodyAndHeader("direct:start2", "Hello whiskey", "where2", "whiskey");
 
         // there should be 2 activemq endpoint
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ManagedJmsEndpointTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ManagedJmsEndpointTest.java
index 45191878423..e4bd5aabc24 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ManagedJmsEndpointTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ManagedJmsEndpointTest.java
@@ -25,7 +25,7 @@ import javax.management.ObjectName;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
@@ -35,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 /**
  *
  */
-public class ManagedJmsEndpointTest extends CamelTestSupport {
+public class ManagedJmsEndpointTest extends AbstractPersistentJMSTest {
 
     @Override
     protected boolean useJmx() {
@@ -46,7 +46,7 @@ public class ManagedJmsEndpointTest extends CamelTestSupport {
     protected CamelContext createCamelContext() {
         CamelContext context = new DefaultCamelContext();
 
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         context.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return context;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameQueueTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameQueueTest.java
index 6e627edf183..58e78d4019e 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameQueueTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameQueueTest.java
@@ -20,13 +20,14 @@ import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-public class TwoConsumerOnSameQueueTest extends CamelTestSupport {
+@TestInstance(TestInstance.Lifecycle.PER_METHOD)
+public class TwoConsumerOnSameQueueTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testTwoConsumerOnSameQueue() throws Exception {
@@ -46,8 +47,8 @@ public class TwoConsumerOnSameQueueTest extends CamelTestSupport {
         getMockEndpoint("mock:a").expectedMessageCount(0);
         getMockEndpoint("mock:b").expectedBodiesReceived("Bye World", "Bye World");
 
-        template.sendBody("activemq:queue:foo", "Bye World");
-        template.sendBody("activemq:queue:foo", "Bye World");
+        template.sendBody("activemq:queue:TwoConsumerOnSameQueueTest", "Bye World");
+        template.sendBody("activemq:queue:TwoConsumerOnSameQueueTest", "Bye World");
 
         assertMockEndpointsSatisfied();
 
@@ -74,8 +75,8 @@ public class TwoConsumerOnSameQueueTest extends CamelTestSupport {
         getMockEndpoint("mock:a").expectedMessageCount(0);
         getMockEndpoint("mock:b").expectedBodiesReceived("Bye World", "Bye World");
 
-        template.sendBody("activemq:queue:foo", "Bye World");
-        template.sendBody("activemq:queue:foo", "Bye World");
+        template.sendBody("activemq:queue:TwoConsumerOnSameQueueTest", "Bye World");
+        template.sendBody("activemq:queue:TwoConsumerOnSameQueueTest", "Bye World");
 
         assertMockEndpointsSatisfied();
     }
@@ -84,8 +85,8 @@ public class TwoConsumerOnSameQueueTest extends CamelTestSupport {
         getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
         getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
 
-        template.sendBody("activemq:queue:foo", "Hello World");
-        template.sendBody("activemq:queue:foo", "Hello World");
+        template.sendBody("activemq:queue:TwoConsumerOnSameQueueTest", "Hello World");
+        template.sendBody("activemq:queue:TwoConsumerOnSameQueueTest", "Hello World");
 
         assertMockEndpointsSatisfied();
     }
@@ -105,10 +106,10 @@ public class TwoConsumerOnSameQueueTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("activemq:queue:foo").routeId("a")
+                from("activemq:queue:TwoConsumerOnSameQueueTest").routeId("a")
                         .to("log:a", "mock:a");
 
-                from("activemq:queue:foo").routeId("b")
+                from("activemq:queue:TwoConsumerOnSameQueueTest").routeId("b")
                         .to("log:b", "mock:b");
             }
         };
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java
index 387a07929b3..6aebeac21ff 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java
@@ -20,13 +20,15 @@ import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-public class TwoConsumerOnSameTopicTest extends CamelTestSupport {
+@TestInstance(TestInstance.Lifecycle.PER_METHOD)
+public class TwoConsumerOnSameTopicTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testTwoConsumerOnSameTopic() throws Exception {
@@ -41,10 +43,10 @@ public class TwoConsumerOnSameTopicTest extends CamelTestSupport {
         getMockEndpoint("mock:a").expectedBodiesReceived("Hello Camel 1", "Hello Camel 2", "Hello Camel 3", "Hello Camel 4");
         getMockEndpoint("mock:b").expectedBodiesReceived("Hello Camel 1", "Hello Camel 2", "Hello Camel 3", "Hello Camel 4");
 
-        template.sendBody("activemq:topic:foo", "Hello Camel 1");
-        template.sendBody("activemq:topic:foo", "Hello Camel 2");
-        template.sendBody("activemq:topic:foo", "Hello Camel 3");
-        template.sendBody("activemq:topic:foo", "Hello Camel 4");
+        template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 1");
+        template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 2");
+        template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 3");
+        template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 4");
 
         assertMockEndpointsSatisfied();
     }
@@ -62,7 +64,7 @@ public class TwoConsumerOnSameTopicTest extends CamelTestSupport {
         getMockEndpoint("mock:a").expectedMessageCount(0);
         getMockEndpoint("mock:b").expectedBodiesReceived("Bye World");
 
-        template.sendBody("activemq:topic:foo", "Bye World");
+        template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Bye World");
 
         assertMockEndpointsSatisfied();
 
@@ -89,7 +91,7 @@ public class TwoConsumerOnSameTopicTest extends CamelTestSupport {
         getMockEndpoint("mock:a").expectedMessageCount(0);
         getMockEndpoint("mock:b").expectedBodiesReceived("Bye World");
 
-        template.sendBody("activemq:topic:foo", "Bye World");
+        template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Bye World");
 
         assertMockEndpointsSatisfied();
     }
@@ -101,7 +103,7 @@ public class TwoConsumerOnSameTopicTest extends CamelTestSupport {
         getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
         getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
 
-        template.sendBody("activemq:topic:foo", "Hello World");
+        template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello World");
 
         assertMockEndpointsSatisfied();
     }
@@ -111,7 +113,7 @@ public class TwoConsumerOnSameTopicTest extends CamelTestSupport {
         CamelContext camelContext = super.createCamelContext();
 
         // must be persistent to remember the messages
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return camelContext;
@@ -122,10 +124,10 @@ public class TwoConsumerOnSameTopicTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("activemq:topic:foo").routeId("a")
+                from("activemq:topic:TwoConsumerOnSameTopicTest").routeId("a")
                         .to("log:a", "mock:a");
 
-                from("activemq:topic:foo").routeId("b")
+                from("activemq:topic:TwoConsumerOnSameTopicTest").routeId("b")
                         .to("log:b", "mock:b");
             }
         };
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/async/AsyncConsumerInOutTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/async/AsyncConsumerInOutTest.java
index 5d2273f7da8..aa7fa24bf02 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/async/AsyncConsumerInOutTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/async/AsyncConsumerInOutTest.java
@@ -40,8 +40,8 @@ public class AsyncConsumerInOutTest extends AbstractJMSTest {
         // process the 2nd message on the queue
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello World", "Bye Camel");
 
-        template.sendBody("activemq:queue:start", "Hello Camel");
-        template.sendBody("activemq:queue:start", "Hello World");
+        template.sendBody("activemq:queue:AsyncConsumerInOutTest.start", "Hello Camel");
+        template.sendBody("activemq:queue:AsyncConsumerInOutTest.start", "Hello World");
 
         assertMockEndpointsSatisfied();
     }
@@ -52,8 +52,7 @@ public class AsyncConsumerInOutTest extends AbstractJMSTest {
 
         camelContext.addComponent("async", new MyAsyncComponent());
 
-        ConnectionFactory connectionFactory
-                = createConnectionFactory(service);
+        ConnectionFactory connectionFactory = createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return camelContext;
@@ -65,17 +64,17 @@ public class AsyncConsumerInOutTest extends AbstractJMSTest {
             @Override
             public void configure() {
                 // enable async in only mode on the consumer
-                from("activemq:queue:start?asyncConsumer=true")
+                from("activemq:queue:AsyncConsumerInOutTest.start?asyncConsumer=true")
                         .choice()
                         .when(body().contains("Camel"))
                         .to("async:camel?delay=2000")
-                        .to(ExchangePattern.InOut, "activemq:queue:camel")
+                        .to(ExchangePattern.InOut, "activemq:queue:AsyncConsumerInOutTest.camel")
                         .to("mock:result")
                         .otherwise()
                         .to("log:other")
                         .to("mock:result");
 
-                from("activemq:queue:camel")
+                from("activemq:queue:AsyncConsumerInOutTest.camel")
                         .to("log:camel")
                         .transform(constant("Bye Camel"));
             }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java
index 0ed3dacf554..f64e2c16829 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java
@@ -22,10 +22,10 @@ import javax.jms.ConnectionFactory;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.jms.CamelJmsTestHelper;
+import org.apache.camel.component.jms.AbstractPersistentJMSTest;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.RouteStartupOrder;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.activemq.common.ConnectionFactoryHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
@@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 /**
  *
  */
-public class JmsDirectStartupOrderIssueTest extends CamelTestSupport {
+public class JmsDirectStartupOrderIssueTest extends AbstractPersistentJMSTest {
 
     @Test
     public void testJmsDirectStartupOrderIssue() throws Exception {
@@ -63,7 +63,7 @@ public class JmsDirectStartupOrderIssueTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
 
-        ConnectionFactory connectionFactory = CamelJmsTestHelper.createPersistentConnectionFactory();
+        ConnectionFactory connectionFactory = ConnectionFactoryHelper.createConnectionFactory(service);
         camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
 
         return camelContext;
diff --git a/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQEmbeddedServiceBuilder.java b/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQEmbeddedServiceBuilder.java
index 25aa2af28e0..27b6eac6e85 100644
--- a/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQEmbeddedServiceBuilder.java
+++ b/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQEmbeddedServiceBuilder.java
@@ -21,6 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URI;
 import java.util.List;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.function.Consumer;
 
 import javax.management.ObjectName;
@@ -612,4 +613,21 @@ public class ActiveMQEmbeddedServiceBuilder {
                 .withDataDirectory(ActiveMQEmbeddedServiceBuilder.class.getResource("/").getFile());
     }
 
+    public static ActiveMQEmbeddedServiceBuilder persistentBroker() {
+        final String name = ActiveMQEmbeddedServiceBuilder.class.getSimpleName() + ThreadLocalRandom.current().nextInt(1000);
+        return persistentBroker(name);
+    }
+
+    public static ActiveMQEmbeddedServiceBuilder persistentBroker(String name) {
+        final String dataDirectory = ActiveMQEmbeddedServiceBuilder.class.getResource("/").getFile() + File.separator + name;
+
+        return new ActiveMQEmbeddedServiceBuilder()
+                .withDeleteAllMessagesOnStartup(true)
+                .withBrokerName(name)
+                .withAdvisorySupport(false)
+                .withUseJmx(false)
+                .withPersistent(true)
+                .withDataDirectory(dataDirectory);
+    }
+
 }
diff --git a/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQPersistentVMService.java b/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQPersistentVMService.java
new file mode 100644
index 00000000000..a99e5f98036
--- /dev/null
+++ b/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQPersistentVMService.java
@@ -0,0 +1,68 @@
+/*
+ * 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.camel.test.infra.activemq.services;
+
+import org.apache.activemq.broker.BrokerService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * An embedded broker that relies on the VM transport for communication.
+ *
+ * @see <a href="https://activemq.apache.org/vm-transport-reference">VM Transport Reference</a>
+ */
+public class ActiveMQPersistentVMService extends AbstractActiveMQEmbeddedService {
+    private static final Logger LOG = LoggerFactory.getLogger(ActiveMQPersistentVMService.class);
+
+    public ActiveMQPersistentVMService() {
+        this(ActiveMQEmbeddedServiceBuilder.persistentBroker().brokerService());
+    }
+
+    public ActiveMQPersistentVMService(BrokerService brokerService) {
+        this(brokerService, true);
+    }
+
+    public ActiveMQPersistentVMService(BrokerService brokerService, boolean recycle) {
+        super(brokerService, recycle);
+    }
+
+    @Override
+    public String getVmURL() {
+        return getVmURL(true);
+    }
+
+    @Override
+    public String getVmURL(boolean create) {
+        return getVmURL(false, create);
+    }
+
+    @Override
+    public String serviceAddress() {
+        return getVmURL(true);
+    }
+
+    @Override
+    public String userName() {
+        return null;
+    }
+
+    @Override
+    public String password() {
+        return null;
+    }
+}
diff --git a/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQServiceFactory.java b/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQServiceFactory.java
index bddb725c436..07cd13bdf5f 100644
--- a/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQServiceFactory.java
+++ b/test-infra/camel-test-infra-activemq/src/test/java/org/apache/camel/test/infra/activemq/services/ActiveMQServiceFactory.java
@@ -104,4 +104,28 @@ public final class ActiveMQServiceFactory {
 
         return service;
     }
+
+    public static synchronized ActiveMQService createPersistentVMService() {
+        return createSingletonPersistentVMService();
+    }
+
+    public static synchronized ActiveMQService createPersistentVMServiceInstance() {
+        if (service == null) {
+            if (instance == null) {
+                instance = new SimpleTestServiceBuilder<>("activemq");
+
+                instance.addLocalMapping(() -> new SingletonActiveMQService(new ActiveMQPersistentVMService(), "activemq"));
+            }
+        }
+
+        return instance.build();
+    }
+
+    public static synchronized ActiveMQService createSingletonPersistentVMService() {
+        if (service == null) {
+            service = createVMServiceInstance();
+        }
+
+        return service;
+    }
 }