Hello to all, I found several examples that are using DataSet (SimpleDataSet) for load tests. So I wrote that simple test:
package com.etna.sandbox; import javax.jms.ConnectionFactory; import javax.naming.Context; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.dataset.SimpleDataSet; import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.test.junit4.CamelTestSupport; import org.apache.camel.util.jndi.JndiContext; import org.junit.Test; /** * * @author nick */ public class PerformanceTest extends CamelTestSupport { private static int MESSAGE_COUNT = 10000; public static final String BROKER_URI = "tcp://localhost:61616"; private static final String MOCK_OUT = "mock:out"; private static final String INPUT_QUEUE = "activemq:queue:dummy-in"; private static final String OUTPUT_QUEUE = "activemq:queue:dummy-out"; private static final String DATASET_NAME = "foo"; private static final String DATASET_URI = "dataset:" + DATASET_NAME; private SimpleDataSet dataSet = new SimpleDataSet(MESSAGE_COUNT); @Override protected Context createJndiContext() throws Exception { JndiContext jndiContext = new JndiContext(); ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(BROKER_URI); jndiContext.bind("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory)); dataSet.setReportCount(100); jndiContext.bind(DATASET_NAME, dataSet); return jndiContext; } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { public void configure() throws Exception { from(DATASET_URI ).to(INPUT_QUEUE); from(INPUT_QUEUE ).to(OUTPUT_QUEUE); from(OUTPUT_QUEUE).to(DATASET_URI); } }; } @Test public void testPerformance() throws Exception { assertMockEndpointsSatisfied(); } } But I'm getting an exception if MESSAGE_COUNT is a big number (> 2000 for example) The test output is bellow: [ main] DefaultCamelContext INFO Apache Camel 2.2-SNAPSHOT (CamelContext:camel-1) is starting [ main] DefaultCamelContext INFO JMX enabled. Using DefaultManagedLifecycleStrategy. [ main] dataset://foo INFO Start: Endpoint[dataset://foo] expecting 10000 messages [ ActiveMQ Task] FailoverTransport INFO Successfully connected to tcp://localhost:61616 [ ActiveMQ Task] FailoverTransport INFO Successfully connected to tcp://localhost:61616 [ main] DefaultCamelContext INFO Apache Camel 2.2-SNAPSHOT (CamelContext:camel-1) started [ main] MockEndpoint INFO Asserting: Endpoint[dataset://foo] is satisfied [ ActiveMQ Task] FailoverTransport INFO Successfully connected to tcp://localhost:61616 [ ActiveMQ Task] FailoverTransport INFO Successfully connected to tcp://localhost:61616 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 100 messages so far. Last group took: 821 millis which is: 121.803 messages per second. average: 121.803 [aultMessageListenerContainer-1] dataset://foo INFO Received: 100 messages so far. Last group took: 748 millis which is: 133.69 messages per second. average: 133.69 [aultMessageListenerContainer-1] dataset://foo INFO Received: 200 messages so far. Last group took: 805 millis which is: 124.224 messages per second. average: 128.783 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 200 messages so far. Last group took: 824 millis which is: 121.359 messages per second. average: 121.581 [aultMessageListenerContainer-1] dataset://foo INFO Received: 300 messages so far. Last group took: 795 millis which is: 125.786 messages per second. average: 127.768 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 300 messages so far. Last group took: 795 millis which is: 125.786 messages per second. average: 122.951 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 400 messages so far. Last group took: 797 millis which is: 125.471 messages per second. average: 123.571 [aultMessageListenerContainer-1] dataset://foo INFO Received: 400 messages so far. Last group took: 798 millis which is: 125.313 messages per second. average: 127.146 [aultMessageListenerContainer-1] dataset://foo INFO Received: 500 messages so far. Last group took: 856 millis which is: 116.822 messages per second. average: 124.938 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 500 messages so far. Last group took: 857 millis which is: 116.686 messages per second. average: 122.13 [aultMessageListenerContainer-1] dataset://foo INFO Received: 600 messages so far. Last group took: 872 millis which is: 114.679 messages per second. average: 123.102 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 600 messages so far. Last group took: 872 millis which is: 114.679 messages per second. average: 120.822 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 700 messages so far. Last group took: 1035 millis which is: 96.618 messages per second. average: 116.647 [aultMessageListenerContainer-1] dataset://foo INFO Received: 700 messages so far. Last group took: 1054 millis which is: 94.877 messages per second. average: 118.084 [aultMessageListenerContainer-1] dataset://foo INFO Received: 800 messages so far. Last group took: 848 millis which is: 117.925 messages per second. average: 118.064 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 800 messages so far. Last group took: 867 millis which is: 115.34 messages per second. average: 116.482 [aultMessageListenerContainer-1] dataset://foo INFO Received: 900 messages so far. Last group took: 772 millis which is: 129.534 messages per second. average: 119.237 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 900 messages so far. Last group took: 773 millis which is: 129.366 messages per second. average: 117.786 [aultMessageListenerContainer-1] dataset://foo INFO Received: 1000 messages so far. Last group took: 885 millis which is: 112.994 messages per second. average: 118.582 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 1000 messages so far. Last group took: 884 millis which is: 113.122 messages per second. average: 117.302 [ main] DefaultCamelContext INFO Apache Camel 2.2-SNAPSHOT (CamelContext:camel-1) is stopping [aultMessageListenerContainer-1] EndpointMessageListener ERROR java.util.concurrent.RejectedExecutionException org.apache.camel.RuntimeCamelException: java.util.concurrent.RejectedExecutionException at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1039) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:103) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876) at java.lang.Thread.run(Thread.java:637) Caused by: java.util.concurrent.RejectedExecutionException at org.apache.camel.processor.RedeliveryErrorHandler.isRunAllowed(RedeliveryErrorHandler.java:195) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:100) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:91) at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49) at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) at org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) at org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83) ... 9 more [aultMessageListenerContainer-1] efaultMessageListenerContainer WARN Execution of JMS message listener failed org.apache.camel.RuntimeCamelException: java.util.concurrent.RejectedExecutionException at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1039) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:103) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876) at java.lang.Thread.run(Thread.java:637) Caused by: java.util.concurrent.RejectedExecutionException at org.apache.camel.processor.RedeliveryErrorHandler.isRunAllowed(RedeliveryErrorHandler.java:195) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:100) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:91) at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49) at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) at org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) at org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83) ... 9 more [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 1100 messages so far. Last group took: 595 millis which is: 168.067 messages per second. average: 120.614 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 1200 messages so far. Last group took: 331 millis which is: 302.115 messages per second. average: 126.971 [mel thread 0: DataSetComponent] dataset://foo INFO Sent: 1300 messages so far. Last group took: 334 millis which is: 299.401 messages per second. average: 132.856 [ main] dataset://foo INFO Stop: Endpoint[dataset://foo] [ main] dataset://foo INFO Stop: Endpoint[dataset://foo] [ main] DefaultInflightRepository INFO Shutting down with no inflight exchanges. [ main] DefaultCamelContext INFO Apache Camel 2.2-SNAPSHOT (CamelContext:camel-1) stopped So the question is what I do wrong? Best regards, Nick