It's hard to say if the results you're seeing are categorically expected given all the variables involved. Furthermore, there are no official performance metrics published to serve as a basis for strict comparison.
I think the most important things you can have when conducting performance tests are a clear set of constraints (e.g. must use persistent messages, must use no more than X GB of RAM, must use 100Mbit network, etc.) and a clear performance target (e.g. 10,000 1KB msgs/sec). The next thing you need is a test that very closely mimics your production work-load which provides metrics corresponding to your performance target. Without this stuff you're liable to waste a lot of time chasing relative gains. Performance tuning is mainly about identifying bottlenecks and adjusting configuration and/or code to deal with those bottlenecks until the performance target is reached. The test you're running is extremely simple so I'm not sure it's putting either broker under enough strain to find meaningful bottlenecks. I will say that Artemis is optimized for performance at scale (i.e. high throughput) and that involves some trade-offs for basic low-latency use-cases like this. If you have identified specific bottlenecks or have targeted tuning questions I can try to help. Aside from that, general tuning information is already available in the documentation you cited. Justin On Tue, Apr 1, 2025 at 5:55 AM ski n <raymondmees...@gmail.com> wrote: > 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 >