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/26 07:08:08 UTC

[camel] 02/04: (chores) camel-jms: test stability cleanups

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

commit 906eeb62a19362061af0840b8c82f8f3564f7534
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Thu Aug 25 09:45:20 2022 +0200

    (chores) camel-jms: test stability cleanups
    
    - Isolate a few tests
    - Adjust timeouts
    - Use unique resources
    - Remove duplicated code
    - Move some logic to the setup methods
    - Cleanup resources
    - Avoid blocking for too long
    - Make a flaky test non-parallel
    - Other minor cleanups
---
 .../jms/ActiveMQOriginalDestinationTest.java       |  2 +-
 .../component/jms/JmsAsyncStartListenerTest.java   |  2 +-
 .../jms/JmsBatchResequencerJMSPriorityTest.java    | 20 ++++++---
 ...msDeadLetterQueueUsingTransferExchangeTest.java |  4 +-
 .../jms/JmsDefaultTaskExecutorTypeTest.java        | 39 +++++++++---------
 .../JmsMessageCreatedStrategyComponentTest.java    |  2 +-
 .../jms/JmsMessageCreatedStrategyEndpointTest.java |  2 +-
 .../jms/JmsMessageIDNotOverridenAMQTest.java       |  2 +-
 .../component/jms/JmsPollingConsumerTest.java      | 21 +++++-----
 .../jms/JmsProducerConcurrentWithReplyTest.java    | 15 +++++--
 ...RequestReplyExclusiveReplyToConcurrentTest.java | 16 ++++++--
 .../component/jms/JmsRouteUsingJMSXGroupTest.java  | 37 ++++++++++++++---
 .../camel/component/jms/JmsSelectorInTest.java     |  2 +
 ...BodyNullErrorHandlerUseOriginalMessageTest.java |  6 ++-
 .../jms/JmsSimpleRequestLateReplyTest.java         |  2 +-
 .../JmsStreamMessageTypeNoStreamCachingTest.java   | 48 ++++++++--------------
 .../component/jms/JmsStreamMessageTypeTest.java    |  5 +--
 .../component/jms/JmsTransferExchangeTest.java     | 12 +++---
 .../component/jms/ProduceMessageConverterTest.java |  4 +-
 .../issues/JmsBlockedAsyncRoutingEngineTest.java   |  2 +-
 .../jms/issues/JmsCustomJMSReplyToIssueTest.java   |  2 +-
 .../component/jms/issues/JmsInOnlyIssueTest.java   |  4 +-
 .../issues/JmsInOutPersistentReplyQueueTest.java   |  4 ++
 .../jms/issues/JmsToFileMessageIdTest.java         |  4 +-
 ...TransactionErrorHandlerRedeliveryDelayTest.java | 12 ++++--
 ...tionErrorHandlerRedeliveryDelayTest-context.xml |  2 +-
 26 files changed, 162 insertions(+), 109 deletions(-)

diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ActiveMQOriginalDestinationTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ActiveMQOriginalDestinationTest.java
index 6f3d3d403e1..bc72c2fc061 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ActiveMQOriginalDestinationTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ActiveMQOriginalDestinationTest.java
@@ -92,7 +92,7 @@ public class ActiveMQOriginalDestinationTest extends AbstractJMSTest {
      * <p/>
      * This implementation uses ActiveMQ specific code which can be moved to activemq-camel when it supports Camel 2.16
      */
-    private class OriginalDestinationPropagateStrategy implements MessageCreatedStrategy {
+    private static class OriginalDestinationPropagateStrategy implements MessageCreatedStrategy {
 
         // TODO: This is supported out of the box from ActiveMQ 5.14 onwards, and hence remove OriginalDestinationPropagateStrategy
 
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 2063e9f79b9..7d5b5da0180 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
@@ -41,7 +41,7 @@ public class JmsAsyncStartListenerTest extends AbstractPersistentJMSTest {
         result.expectedMessageCount(2);
 
         template.sendBody("activemq:queue:JmsAsyncStartListenerTest", "Hello World");
-        template.sendBody("activemq:queue:JmsAsyncStartListenerTest", "Gooday World");
+        template.sendBody("activemq:queue:JmsAsyncStartListenerTest", "Goodbye World");
 
         result.assertIsSatisfied();
     }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java
index 1b277584a24..ef02ebb03aa 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java
@@ -16,20 +16,22 @@
  */
 package org.apache.camel.component.jms;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Isolated;
 
 /**
  * JMSPriority being ordered using the resequencer in batch mode.
  */
+@Isolated
 public class JmsBatchResequencerJMSPriorityTest extends AbstractJMSTest {
 
-    @Test
-    public void testBatchResequencerJMSPriority() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceived("G", "A", "B", "E", "H", "C", "D", "F");
-
+    @BeforeEach
+    void sendMessages() {
         // must use preserveMessageQos=true to be able to specify the JMSPriority to be used
         template.sendBodyAndHeader("jms:queue:JmsBatchResequencerJMSPriorityTest?preserveMessageQos=true", "A", "JMSPriority",
                 6);
@@ -47,8 +49,14 @@ public class JmsBatchResequencerJMSPriorityTest extends AbstractJMSTest {
                 8);
         template.sendBodyAndHeader("jms:queue:JmsBatchResequencerJMSPriorityTest?preserveMessageQos=true", "H", "JMSPriority",
                 6);
+    }
+
+    @Test
+    public void testBatchResequencerJMSPriority() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedBodiesReceived("G", "A", "B", "E", "H", "C", "D", "F");
 
-        assertMockEndpointsSatisfied();
+        assertMockEndpointsSatisfied(5, TimeUnit.SECONDS);
     }
 
     @Override
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterQueueUsingTransferExchangeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterQueueUsingTransferExchangeTest.java
index c685bf7e4e3..58cf7a9e9be 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterQueueUsingTransferExchangeTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeadLetterQueueUsingTransferExchangeTest.java
@@ -41,7 +41,7 @@ public class JmsDeadLetterQueueUsingTransferExchangeTest extends AbstractJMSTest
 
     @Test
     public void testKabom() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:dead");
+        MockEndpoint mock = getMockEndpoint("mock:JmsDeadLetterQueueUsingTransferExchangeTest.dead");
         mock.expectedBodiesReceived("Kabom");
 
         template.sendBody("direct:start", "Kabom");
@@ -68,7 +68,7 @@ public class JmsDeadLetterQueueUsingTransferExchangeTest extends AbstractJMSTest
                     }
                 }).to("mock:result");
 
-                from(getUri()).to("mock:dead");
+                from(getUri()).to("mock:JmsDeadLetterQueueUsingTransferExchangeTest.dead");
             }
         };
     }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java
index 22d92e0e677..ffe2e710c92 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java
@@ -50,6 +50,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 @Tags({ @Tag("not-parallel"), @Tag("slow") })
 @Timeout(60)
 public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
+    public static final int MESSAGE_COUNT = 500;
+    public static final int POOL_SIZE = 5;
+
     private static final Logger LOG = LoggerFactory.getLogger(JmsDefaultTaskExecutorTypeTest.class);
 
     @RegisterExtension
@@ -60,8 +63,8 @@ public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
         context.getRouteController().startRoute("threadPool");
         Long beforeThreadCount = currentThreadCount();
         getMockEndpoint("mock:result.threadPool").expectedMessageCount(1000);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.threadPool", 500, 5, DefaultTaskExecutorType.ThreadPool);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.threadPool", 500, 5, DefaultTaskExecutorType.ThreadPool);
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.threadPool", DefaultTaskExecutorType.ThreadPool);
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.threadPool", DefaultTaskExecutorType.ThreadPool);
         assertMockEndpointsSatisfied();
         Long numberThreadsCreated = currentThreadCount() - beforeThreadCount;
         LOG.info("Number of threads created, testThreadPoolTaskExecutor: {}", numberThreadsCreated);
@@ -74,9 +77,9 @@ public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
         context.getRouteController().startRoute("simpleAsync");
         Long beforeThreadCount = currentThreadCount();
         getMockEndpoint("mock:result.simpleAsync").expectedMessageCount(1000);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.simpleAsync", 500, 5, DefaultTaskExecutorType.SimpleAsync);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.simpleAsync", 500, 5, DefaultTaskExecutorType.SimpleAsync);
-        assertMockEndpointsSatisfied();
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.simpleAsync", DefaultTaskExecutorType.SimpleAsync);
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.simpleAsync", DefaultTaskExecutorType.SimpleAsync);
+        assertMockEndpointsSatisfied(40, TimeUnit.SECONDS);
         Long numberThreadsCreated = currentThreadCount() - beforeThreadCount;
         LOG.info("Number of threads created, testSimpleAsyncTaskExecutor: " + numberThreadsCreated);
         assertTrue(numberThreadsCreated >= 800, "Number of threads created should be equal or higher than "
@@ -88,8 +91,8 @@ public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
         context.getRouteController().startRoute("default");
         Long beforeThreadCount = currentThreadCount();
         getMockEndpoint("mock:result.default").expectedMessageCount(1000);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", 500, 5, null);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", 500, 5, null);
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", null);
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", null);
         assertMockEndpointsSatisfied();
         Long numberThreadsCreated = currentThreadCount() - beforeThreadCount;
         LOG.info("Number of threads created, testDefaultTaskExecutor: {}", numberThreadsCreated);
@@ -106,9 +109,9 @@ public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
         context.getRouteController().startRoute("default");
         Long beforeThreadCount = currentThreadCount();
         getMockEndpoint("mock:result.default").expectedMessageCount(1000);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", 500, 5, DefaultTaskExecutorType.ThreadPool);
-        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", 500, 5, DefaultTaskExecutorType.ThreadPool);
-        assertMockEndpointsSatisfied();
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", DefaultTaskExecutorType.ThreadPool);
+        doSendMessages("foo.JmsDefaultTaskExecutorTypeTest.default", DefaultTaskExecutorType.ThreadPool);
+        assertMockEndpointsSatisfied(40, TimeUnit.SECONDS);
         Long numberThreadsCreated = currentThreadCount() - beforeThreadCount;
         LOG.info("Number of threads created, testDefaultTaskExecutorThreadPoolAtComponentConfig: " + numberThreadsCreated);
         assertTrue(numberThreadsCreated <= 100, "Number of threads created should be equal or lower than "
@@ -120,8 +123,7 @@ public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
             IllegalAccessException, InvocationTargetException {
         Method m = ThreadHelper.class.getDeclaredMethod("nextThreadCounter", (Class<?>[]) null);
         m.setAccessible(true);
-        Long nextThreadCount = (Long) m.invoke(null);
-        return nextThreadCount;
+        return (Long) m.invoke(null);
     }
 
     @Override
@@ -152,22 +154,21 @@ public class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
                 return null;
             });
         }
-
     }
 
     private void doSendMessages(
-            final String queueName, int messages, int poolSize,
+            final String queueName,
             final DefaultTaskExecutorType defaultTaskExecutorType)
             throws Exception {
-        ExecutorService executor = Executors.newFixedThreadPool(poolSize);
-        final CountDownLatch latch = new CountDownLatch(messages);
+        final ExecutorService executor = Executors.newFixedThreadPool(POOL_SIZE);
+        final CountDownLatch latch = new CountDownLatch(MESSAGE_COUNT);
 
         try {
-            doSendMessages(queueName, messages, defaultTaskExecutorType, latch, executor);
+            doSendMessages(queueName, MESSAGE_COUNT, defaultTaskExecutorType, latch, executor);
             executor.shutdown();
-            executor.awaitTermination(5, TimeUnit.SECONDS);
+            executor.awaitTermination(POOL_SIZE, TimeUnit.SECONDS);
         } finally {
-            latch.await(5, TimeUnit.SECONDS);
+            latch.await(POOL_SIZE, TimeUnit.SECONDS);
         }
     }
 
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyComponentTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyComponentTest.java
index 9d66e15ec69..70617504cf3 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyComponentTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyComponentTest.java
@@ -65,7 +65,7 @@ public class JmsMessageCreatedStrategyComponentTest extends AbstractJMSTest {
         };
     }
 
-    private class MyMessageCreatedStrategy implements MessageCreatedStrategy {
+    private static class MyMessageCreatedStrategy implements MessageCreatedStrategy {
 
         @Override
         public void onMessageCreated(Message message, Session session, Exchange exchange, Throwable cause) {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyEndpointTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyEndpointTest.java
index 8ad2695653b..c9cc2c2cfd6 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyEndpointTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageCreatedStrategyEndpointTest.java
@@ -62,7 +62,7 @@ public class JmsMessageCreatedStrategyEndpointTest extends AbstractJMSTest {
         };
     }
 
-    private class MyMessageCreatedStrategy implements MessageCreatedStrategy {
+    private static class MyMessageCreatedStrategy implements MessageCreatedStrategy {
 
         @Override
         public void onMessageCreated(Message message, Session session, Exchange exchange, Throwable cause) {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageIDNotOverridenAMQTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageIDNotOverridenAMQTest.java
index 898f88eb275..b096a6139f5 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageIDNotOverridenAMQTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMessageIDNotOverridenAMQTest.java
@@ -79,7 +79,7 @@ public class JmsMessageIDNotOverridenAMQTest extends AbstractJMSTest {
         };
     }
 
-    private class MyMessageCreatedStrategy implements MessageCreatedStrategy {
+    private static class MyMessageCreatedStrategy implements MessageCreatedStrategy {
 
         @Override
         public void onMessageCreated(Message message, Session session, Exchange exchange, Throwable cause) {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsPollingConsumerTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsPollingConsumerTest.java
index b876d8e0264..18f29387fde 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsPollingConsumerTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsPollingConsumerTest.java
@@ -26,17 +26,19 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Isolated;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+@Isolated
 public class JmsPollingConsumerTest extends AbstractJMSTest {
 
     @Nested
     class ConsumerWaitTest {
 
-        private CountDownLatch latch = new CountDownLatch(1);
+        private final CountDownLatch latch = new CountDownLatch(1);
 
         @BeforeEach
         void setupConsumer() {
@@ -68,7 +70,7 @@ public class JmsPollingConsumerTest extends AbstractJMSTest {
 
     @Nested
     class ConsumerNoWaitTest {
-        private CountDownLatch latch = new CountDownLatch(1);
+        private final CountDownLatch latch = new CountDownLatch(1);
         private volatile String body;
 
         @BeforeEach
@@ -90,8 +92,7 @@ public class JmsPollingConsumerTest extends AbstractJMSTest {
             MockEndpoint mock = getMockEndpoint("mock:result");
             mock.expectedBodiesReceived("Hello Claus");
 
-            // wait a little to demonstrate we can start poll before we have a msg on the queue
-            assertTrue(latch.await(500, TimeUnit.MILLISECONDS));
+            assertTrue(latch.await(1, TimeUnit.SECONDS));
             assertNull(body, "Message body should be null because there was no message and the polling consumer is 'no wait'");
 
             template.sendBody("direct:start", "Hello");
@@ -102,7 +103,7 @@ public class JmsPollingConsumerTest extends AbstractJMSTest {
 
     @Nested
     class LowTimeoutTest {
-        private CountDownLatch latch = new CountDownLatch(1);
+        private final CountDownLatch latch = new CountDownLatch(1);
         private volatile String body;
 
         @BeforeEach
@@ -132,12 +133,10 @@ public class JmsPollingConsumerTest extends AbstractJMSTest {
 
     @Nested
     class HighTimeOutTest {
-        private CountDownLatch latch = new CountDownLatch(1);
+        private final CountDownLatch latch = new CountDownLatch(1);
 
         @BeforeEach
         void setupConsumer() {
-            // use another thread for polling consumer to demonstrate that we can wait before
-            // the message is sent to the queue
             Executors.newSingleThreadExecutor().execute(() -> {
                 String body = consumer.receiveBody("activemq:queue.JmsPollingConsumerTest.start", 3000, String.class);
                 template.sendBody("activemq:queue.JmsPollingConsumerTest.foo", body + " Claus");
@@ -150,10 +149,12 @@ public class JmsPollingConsumerTest extends AbstractJMSTest {
             MockEndpoint mock = getMockEndpoint("mock:result");
             mock.expectedBodiesReceived("Hello Claus");
 
-            // wait a little to demonstrate we can start poll before we have a msg on the queue
             assertFalse(latch.await(500, TimeUnit.MILLISECONDS),
-                    "No message should have been received within 500 milliseconds");
+                    "No message should have been received within 500 milliseconds because the test has not sent any");
+
             template.sendBody("direct:start", "Hello");
+            assertTrue(latch.await(5, TimeUnit.SECONDS),
+                    "A message should have been received but it was not");
 
             assertMockEndpointsSatisfied();
         }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerConcurrentWithReplyTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerConcurrentWithReplyTest.java
index a41fd8a91bc..021500e3aec 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerConcurrentWithReplyTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsProducerConcurrentWithReplyTest.java
@@ -21,8 +21,10 @@ import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.Timeout;
@@ -34,6 +36,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 @TestInstance(TestInstance.Lifecycle.PER_METHOD)
 public class JmsProducerConcurrentWithReplyTest extends AbstractJMSTest {
 
+    private ExecutorService executor;
+
+    @AfterEach
+    void cleanupExecutor() {
+        executor.shutdownNow();
+    }
+
     @Test
     public void testNoConcurrentProducers() throws Exception {
         doSendMessages(1, 1);
@@ -48,7 +57,7 @@ public class JmsProducerConcurrentWithReplyTest extends AbstractJMSTest {
         getMockEndpoint("mock:result").expectedMessageCount(files);
         getMockEndpoint("mock:result").expectsNoDuplicates(body());
 
-        ExecutorService executor = Executors.newFixedThreadPool(poolSize);
+        executor = Executors.newFixedThreadPool(poolSize);
         final List<Future<String>> futures = new ArrayList<>();
         for (int i = 0; i < files; i++) {
             final int index = i;
@@ -59,10 +68,10 @@ public class JmsProducerConcurrentWithReplyTest extends AbstractJMSTest {
         assertMockEndpointsSatisfied();
 
         for (int i = 0; i < futures.size(); i++) {
-            Object out = futures.get(i).get();
+            Object out = futures.get(i).get(5, TimeUnit.SECONDS);
             assertEquals("Bye Message " + i, out);
         }
-        executor.shutdownNow();
+
     }
 
     @Override
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyExclusiveReplyToConcurrentTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyExclusiveReplyToConcurrentTest.java
index cd117506ad8..75241cb066f 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyExclusiveReplyToConcurrentTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyExclusiveReplyToConcurrentTest.java
@@ -26,6 +26,7 @@ import org.apache.camel.util.StopWatch;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Isolated;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -33,6 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+@Isolated
 public class JmsRequestReplyExclusiveReplyToConcurrentTest extends AbstractJMSTest {
 
     private static final Logger LOG = LoggerFactory.getLogger(JmsRequestReplyExclusiveReplyToConcurrentTest.class);
@@ -47,10 +49,16 @@ public class JmsRequestReplyExclusiveReplyToConcurrentTest extends AbstractJMSTe
     }
 
     @AfterEach
-    void cleanupExecutor() throws InterruptedException {
-        // just sleep a bit before shutting down
-        Thread.sleep(1000);
-        executor.shutdownNow();
+    void cleanupExecutor() {
+        executor.shutdown();
+        try {
+            final boolean finished = executor.awaitTermination(1, TimeUnit.SECONDS);
+            if (!finished) {
+                LOG.debug("Executor tasks did not terminate within the timeout (shutdown will be forced)");
+            }
+        } catch (InterruptedException e) {
+            executor.shutdownNow();
+        }
     }
 
     @Test
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingJMSXGroupTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingJMSXGroupTest.java
index a20994885f6..4f48cfa0895 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingJMSXGroupTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingJMSXGroupTest.java
@@ -18,30 +18,40 @@ package org.apache.camel.component.jms;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.jms.JmsConstants.JMS_X_GROUP_ID;
 import static org.apache.camel.test.junit5.TestSupport.body;
 
+@Timeout(20)
 public class JmsRouteUsingJMSXGroupTest extends AbstractJMSTest {
+    public static final int POOL_SIZE = 1;
+    private static final Logger LOG = LoggerFactory.getLogger(JmsRouteUsingJMSXGroupTest.class);
+
+    private ExecutorService executor;
 
     @Test
     public void testNoConcurrentProducersJMSXGroupID() throws Exception {
-        doSendMessages(1, 1);
+        doSendMessages(1);
     }
 
     @Test
     public void testConcurrentProducersJMSXGroupID() throws Exception {
-        doSendMessages(10, 1);
+        doSendMessages(10);
     }
 
-    private void doSendMessages(int files, int poolSize) throws Exception {
+    private void doSendMessages(int files) throws Exception {
         getMockEndpoint("mock:result").expectedMessageCount(files * 2);
         getMockEndpoint("mock:result").expectsNoDuplicates(body());
 
-        ExecutorService executor = Executors.newFixedThreadPool(poolSize);
         for (int i = 0; i < files; i++) {
             final int index = i;
             executor.submit(() -> {
@@ -53,7 +63,24 @@ public class JmsRouteUsingJMSXGroupTest extends AbstractJMSTest {
         }
 
         assertMockEndpointsSatisfied();
-        executor.shutdownNow();
+    }
+
+    @BeforeEach
+    void setupExecutor() {
+        executor = Executors.newFixedThreadPool(POOL_SIZE);
+    }
+
+    @AfterEach
+    void cleanupExecutor() {
+        executor.shutdown();
+        try {
+            final boolean finished = executor.awaitTermination(1, TimeUnit.SECONDS);
+            if (!finished) {
+                LOG.debug("Executor tasks did not terminate within the timeout (shutdown will be forced)");
+            }
+        } catch (InterruptedException e) {
+            executor.shutdownNow();
+        }
     }
 
     @Override
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorInTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorInTest.java
index 441b8966675..965bb34d0b6 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorInTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorInTest.java
@@ -20,10 +20,12 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.parallel.Isolated;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 @Timeout(30)
+@Isolated
 public class JmsSelectorInTest extends AbstractJMSTest {
 
     @Test
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 40f85cc5d38..590fa083785 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
@@ -33,7 +33,8 @@ public class JmsSetBodyNullErrorHandlerUseOriginalMessageTest extends AbstractPe
 
         assertMockEndpointsSatisfied();
 
-        String body = consumer.receiveBody("activemq:queue:dead", 5000, String.class);
+        String body = consumer.receiveBody("activemq:queue:JmsSetBodyNullErrorHandlerUseOriginalMessageTest.dead", 5000,
+                String.class);
         assertEquals("Hello World", body);
     }
 
@@ -42,7 +43,8 @@ public class JmsSetBodyNullErrorHandlerUseOriginalMessageTest extends AbstractPe
         return new RouteBuilder() {
             @Override
             public void configure() {
-                errorHandler(deadLetterChannel("activemq:queue:dead").useOriginalMessage());
+                errorHandler(deadLetterChannel("activemq:queue:JmsSetBodyNullErrorHandlerUseOriginalMessageTest.dead")
+                        .useOriginalMessage());
 
                 from("activemq:queue:JmsSetBodyNullErrorHandlerUseOriginalMessageTest")
                         .to("mock:foo")
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestLateReplyTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestLateReplyTest.java
index f87736a8532..93d85b352b8 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestLateReplyTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestLateReplyTest.java
@@ -133,6 +133,6 @@ public class JmsSimpleRequestLateReplyTest extends AbstractJMSTest {
 
     protected static String getQueueEndpointName() {
         // need to use a fixed queue for reply as a temp queue may be deleted
-        return "activemq:queue:hello.queue?replyTo=myReplyQueue";
+        return "activemq:queue:JmsSimpleRequestLateReplyTest?replyTo=JmsSimpleRequestLateReplyTest.reply";
     }
 }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeNoStreamCachingTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeNoStreamCachingTest.java
index e2c8a3dfca0..a8515a42562 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeNoStreamCachingTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeNoStreamCachingTest.java
@@ -23,12 +23,16 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.activemq.services.ActiveMQService;
 import org.apache.camel.util.FileUtil;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
 import static org.apache.camel.test.junit5.TestSupport.deleteDirectory;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+@ResourceLock("target/stream/JmsStreamMessageTypeNoStreamCachingTest")
 public class JmsStreamMessageTypeNoStreamCachingTest extends AbstractJMSTest {
 
     @Override
@@ -59,36 +63,17 @@ public class JmsStreamMessageTypeNoStreamCachingTest extends AbstractJMSTest {
         return camelContext;
     }
 
-    @Test
-    public void testStreamType() throws Exception {
+    @ParameterizedTest
+    @ValueSource(strings = { "message1.xml", "message1.txt" })
+    @DisplayName("Tests stream type with both a small (message1.xml) and a large file (message1.txt)")
+    public void testStreamType(String filename) throws Exception {
         getMockEndpoint("mock:resultJmsStreamMessageTypeNoStreamCachingTest").expectedMessageCount(1);
 
         // copy the file
-        FileUtil.copyFile(new File("src/test/data/message1.xml"), new File("target/stream/in/message1.xml"));
+        final File baseFile = new File("src/test/data/", filename);
+        final File sourceFile = new File("target/stream/JmsStreamMessageTypeNoStreamCachingTest/in", filename);
 
-        assertMockEndpointsSatisfied();
-
-        Object body = getMockEndpoint("mock:resultJmsStreamMessageTypeNoStreamCachingTest").getReceivedExchanges().get(0)
-                .getIn().getBody();
-        StreamMessageInputStream is = assertIsInstanceOf(StreamMessageInputStream.class, body);
-
-        // no more bytes should be available on the inputstream
-        assertEquals(0, is.available());
-
-        // assert on the content of input versus output file
-        String srcContent = context.getTypeConverter().mandatoryConvertTo(String.class, new File("src/test/data/message1.xml"));
-        String dstContent
-                = context.getTypeConverter().mandatoryConvertTo(String.class,
-                        new File("target/stream/JmsStreamMessageTypeNoStreamCachingTest/out/message1.xml"));
-        assertEquals(srcContent, dstContent, "both the source and destination files should have the same content");
-    }
-
-    @Test
-    public void testStreamTypeWithBigFile() throws Exception {
-        getMockEndpoint("mock:resultJmsStreamMessageTypeNoStreamCachingTest").expectedMessageCount(1);
-
-        // copy the file
-        FileUtil.copyFile(new File("src/test/data/message1.txt"), new File("target/stream/in/message1.txt"));
+        FileUtil.copyFile(baseFile, sourceFile);
 
         assertMockEndpointsSatisfied();
 
@@ -96,14 +81,14 @@ public class JmsStreamMessageTypeNoStreamCachingTest extends AbstractJMSTest {
                 .getIn().getBody();
         StreamMessageInputStream is = assertIsInstanceOf(StreamMessageInputStream.class, body);
 
-        // no more bytes should be available on the inputstream
+        // no more bytes should be available on the input stream
         assertEquals(0, is.available());
 
         // assert on the content of input versus output file
-        String srcContent = context.getTypeConverter().mandatoryConvertTo(String.class, new File("src/test/data/message1.txt"));
+        String srcContent = context.getTypeConverter().mandatoryConvertTo(String.class, baseFile);
         String dstContent
                 = context.getTypeConverter().mandatoryConvertTo(String.class,
-                        new File("target/stream/JmsStreamMessageTypeNoStreamCachingTest/out/message1.txt"));
+                        new File("target/stream/JmsStreamMessageTypeNoStreamCachingTest/out/", filename));
         assertEquals(srcContent, dstContent, "both the source and destination files should have the same content");
     }
 
@@ -112,7 +97,8 @@ public class JmsStreamMessageTypeNoStreamCachingTest extends AbstractJMSTest {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("file:target/stream/in").to("jms:queue:JmsStreamMessageTypeNoStreamCachingTest");
+                from("file:target/stream/JmsStreamMessageTypeNoStreamCachingTest/in")
+                        .to("jms:queue:JmsStreamMessageTypeNoStreamCachingTest");
 
                 from("jms:queue:JmsStreamMessageTypeNoStreamCachingTest")
                         .to("file:target/stream/JmsStreamMessageTypeNoStreamCachingTest/out")
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java
index 2e31df32b64..2f4aa126efa 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java
@@ -25,8 +25,7 @@ import org.apache.camel.test.infra.activemq.services.ActiveMQService;
 import org.apache.camel.util.FileUtil;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Tag;
-import org.junit.jupiter.api.Tags;
+import org.junit.jupiter.api.parallel.ResourceLock;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
@@ -37,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 /**
  * This test cannot run in parallel: it reuses the same path for different test iterations
  */
-@Tags({ @Tag("not-parallel") })
+@ResourceLock("target/stream/JmsStreamMessageTypeTest")
 public class JmsStreamMessageTypeTest extends AbstractJMSTest {
 
     @Override
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java
index 3c028396ffc..da3c61e6763 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.jms;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.jupiter.api.Test;
@@ -23,14 +25,14 @@ import org.junit.jupiter.api.Test;
 public class JmsTransferExchangeTest extends AbstractJMSTest {
 
     protected String getUri() {
-        return "activemq:queue:foo?transferExchange=true";
+        return "activemq:queue:JmsTransferExchangeTest?transferExchange=true";
     }
 
     @Test
     public void testBodyOnly() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedBodiesReceived("Hello World");
-        mock.expectedHeaderReceived("JMSDestination", "queue://foo");
+        mock.expectedHeaderReceived("JMSDestination", "queue://JmsTransferExchangeTest");
 
         template.sendBody("direct:start", "Hello World");
 
@@ -42,7 +44,7 @@ public class JmsTransferExchangeTest extends AbstractJMSTest {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedBodiesReceived("Hello World");
         mock.expectedHeaderReceived("foo", "cheese");
-        mock.expectedHeaderReceived("JMSDestination", "queue://foo");
+        mock.expectedHeaderReceived("JMSDestination", "queue://JmsTransferExchangeTest");
 
         template.sendBodyAndHeader("direct:start", "Hello World", "foo", "cheese");
 
@@ -55,7 +57,7 @@ public class JmsTransferExchangeTest extends AbstractJMSTest {
         mock.expectedBodiesReceived("Hello World");
         mock.expectedHeaderReceived("foo", "cheese");
         mock.expectedPropertyReceived("bar", 123);
-        mock.expectedHeaderReceived("JMSDestination", "queue://foo");
+        mock.expectedHeaderReceived("JMSDestination", "queue://JmsTransferExchangeTest");
 
         template.send("direct:start", exchange -> {
             exchange.getIn().setBody("Hello World");
@@ -63,7 +65,7 @@ public class JmsTransferExchangeTest extends AbstractJMSTest {
             exchange.setProperty("bar", 123);
         });
 
-        assertMockEndpointsSatisfied();
+        assertMockEndpointsSatisfied(5, TimeUnit.SECONDS);
     }
 
     @Override
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ProduceMessageConverterTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ProduceMessageConverterTest.java
index efbc639f52b..36d4198f05c 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/ProduceMessageConverterTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/ProduceMessageConverterTest.java
@@ -43,7 +43,7 @@ public class ProduceMessageConverterTest extends AbstractJMSTest {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedBodiesReceived("Hello World");
 
-        template.sendBody("activemq:queue:hello?messageConverter=#myMessageConverter", "World");
+        template.sendBody("activemq:queue:ProduceMessageConverterTest?messageConverter=#myMessageConverter", "World");
 
         assertMockEndpointsSatisfied();
     }
@@ -52,7 +52,7 @@ public class ProduceMessageConverterTest extends AbstractJMSTest {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from("activemq:queue:hello").to("mock:result");
+                from("activemq:queue:ProduceMessageConverterTest").to("mock:result");
             }
         };
     }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBlockedAsyncRoutingEngineTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBlockedAsyncRoutingEngineTest.java
index 5e8d3f4e598..a6267d12efb 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBlockedAsyncRoutingEngineTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBlockedAsyncRoutingEngineTest.java
@@ -141,7 +141,7 @@ public class JmsBlockedAsyncRoutingEngineTest extends CamelTestSupport {
         };
     }
 
-    private class DelayerBrokerPlugin extends BrokerPluginSupport {
+    private static class DelayerBrokerPlugin extends BrokerPluginSupport {
         int i;
 
         @Override
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsCustomJMSReplyToIssueTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsCustomJMSReplyToIssueTest.java
index f3f878ad05b..0deffcc35a6 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsCustomJMSReplyToIssueTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsCustomJMSReplyToIssueTest.java
@@ -30,7 +30,7 @@ import org.springframework.jms.core.JmsTemplate;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-@Timeout(10)
+@Timeout(15)
 public class JmsCustomJMSReplyToIssueTest extends AbstractJMSTest {
 
     private JmsComponent amq;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOnlyIssueTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOnlyIssueTest.java
index ccf24fea347..a0030ad9e30 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOnlyIssueTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOnlyIssueTest.java
@@ -50,7 +50,7 @@ public class JmsInOnlyIssueTest extends AbstractJMSTest {
 
         final CompletableFuture<Object> future = template.asyncSendBody("activemq:queue:JmsInOnlyIssueTest.in", "Hello World");
 
-        assertDoesNotThrow(() -> future.get(1, TimeUnit.SECONDS));
+        assertDoesNotThrow(() -> future.get(5, TimeUnit.SECONDS));
 
         assertMockEndpointsSatisfied();
     }
@@ -83,7 +83,7 @@ public class JmsInOnlyIssueTest extends AbstractJMSTest {
             exchange.getIn().setBody("Hello World");
         });
 
-        assertDoesNotThrow(() -> future.get(1, TimeUnit.SECONDS));
+        assertDoesNotThrow(() -> future.get(5, TimeUnit.SECONDS));
 
         assertMockEndpointsSatisfied();
     }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOutPersistentReplyQueueTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOutPersistentReplyQueueTest.java
index 89638285f2f..87dcf8b44c4 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOutPersistentReplyQueueTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsInOutPersistentReplyQueueTest.java
@@ -19,8 +19,12 @@ package org.apache.camel.component.jms.issues;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jms.AbstractJMSTest;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Tags;
 import org.junit.jupiter.api.Test;
 
+// Not parallel due to processing some part of the route concurrently (may be delayed when running on the test threads)
+@Tags({ @Tag("not-parallel") })
 public class JmsInOutPersistentReplyQueueTest extends AbstractJMSTest {
 
     @Test
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsToFileMessageIdTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsToFileMessageIdTest.java
index 7ec9de1074c..bd8f98ca7d7 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsToFileMessageIdTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsToFileMessageIdTest.java
@@ -36,7 +36,7 @@ public class JmsToFileMessageIdTest extends AbstractJMSTest {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(1);
 
-        template.sendBody("activemq:foo", "Hello World");
+        template.sendBody("activemq:JmsToFileMessageIdTest", "Hello World");
 
         assertMockEndpointsSatisfied();
     }
@@ -52,7 +52,7 @@ public class JmsToFileMessageIdTest extends AbstractJMSTest {
             @Override
             public void configure() {
                 // Make a route from an activemq queue to a file endpoint, then try to call getMessageId()
-                from("activemq:foo")
+                from("activemq:JmsToFileMessageIdTest")
                         .process(exchange -> {
                             // assert camel id is based on jms id
                             String camelId = exchange.getIn().getMessageId();
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest.java
index 35860ce09e6..a9467c88e8f 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.jms.issues;
 
+import java.util.concurrent.atomic.LongAdder;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
@@ -30,7 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
  */
 public class TransactionErrorHandlerRedeliveryDelayTest extends CamelSpringTestSupport {
 
-    private static volatile int counter;
+    private static LongAdder counter = new LongAdder();
 
     @Override
     protected AbstractApplicationContext createApplicationContext() {
@@ -42,7 +44,7 @@ public class TransactionErrorHandlerRedeliveryDelayTest extends CamelSpringTestS
     public void testTransactedRedeliveryDelay() throws Exception {
         getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
 
-        template.sendBody("activemq:queue:in", "Hello World");
+        template.sendBody("activemq:queue:TransactionErrorHandlerRedeliveryDelayTest.in", "Hello World");
 
         assertMockEndpointsSatisfied();
     }
@@ -54,8 +56,10 @@ public class TransactionErrorHandlerRedeliveryDelayTest extends CamelSpringTestS
 
         @Override
         public void process(Exchange exchange) {
-            if (counter++ < 3) {
-                throw new IllegalArgumentException("Forced exception as counter is " + counter);
+            int counterValue = counter.intValue();
+            counter.increment();
+            if (counterValue < 3) {
+                throw new IllegalArgumentException("Forced exception as counter is " + counterValue);
             }
             assertTrue(exchange.isTransacted(), "Should be transacted");
             exchange.getIn().setBody("Bye World");
diff --git a/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml b/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml
index 7264364b436..4ce20a95881 100644
--- a/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml
+++ b/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml
@@ -26,7 +26,7 @@
     <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <jmxAgent id="agent" disabled="true"/>
         <route errorHandlerRef="myTransactionErrorHandler">
-            <from uri="activemq:queue:in"/>
+            <from uri="activemq:queue:TransactionErrorHandlerRedeliveryDelayTest.in"/>
             <transacted ref="required"/>
             <process ref="myFailureProcessor"/>
             <to uri="mock:result"/>