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

Reply via email to