Hi ActiveMQ community,

I have an environment where I communicate a lot between Apache Camel and
Apache ActiveMQ. Currently, I use Classic as broker, but I used Artemis in
other environments before. Mostly I just take the default settings (with a
few small tweaks) and let it run.

Currently, I try to optimize broker communication, and to learn more about
broker configuration and tuning. As a starting point, I created a typical
Camel integration with 10 routes that connects through ActiveMQ. I ran this
on my laptop. On the Camel side, I use both the JMS client (Spring based)
and the SJMS (Pure JMS). The camel routes, broker configs, and systeminfo
are in this gist:

https://gist.github.com/skin27/485fcfe4886260ffa1047eb4843e2cb3

Both ActiveMQ Classic and ActiveMQ Artemis I ran embedded in a Spring Boot
application as a single node. These were the first results (average in
milliseconds per run):

Pure Camel (In-memory/No Broker): ~1 ms

Classic

Camel JMS client: 17 ms
Camel SJMS client: 30 ms

Camel Pooled JMS client: 13 ms
Camel Pooled SJMS client: 21 ms

Artemis

Camel JMS client: 27 ms
Camel SJMS client: 40 ms

Camel Pooled JMS client: 44 ms
Camel Pooled SJMS client: 33 ms

Are these results that are expected based on my setup?

Of course, I already looked at the performance tuning guide:

Artemis:
https://activemq.apache.org/components/artemis/documentation/latest/perf-tuning.html
Classic:
https://activemq.apache.org/components/classic/documentation/performance-tuning

I already tried out multiple consumers, async and pooledConnection. If you
however based on my setup:

Camel <---> Embedded ActiveMQ

have a few tips which I can try out, I appreciate it.

Thanks,

Raymond

Reply via email to