activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ryan Stewart <>
Subject VM transport not using pass-by-reference
Date Fri, 23 May 2008 22:32:03 GMT

I'm trying to use an embedded ActiveMQ instance for some lightweight message
handling. According to the VM Transport
Reference  and this FAQ ,
the VM transport should pass messages by reference, giving some nice, lean

I'm using version 5.1.0 final. All in one VM, I create one producer and then
x durable subscribers to a topic. They all use vm://default for the
connection URI, which, according to the docs, starts a single embedded

Using a profiler, I see that for every message to the topic, 2x message
objects are created (ActiveMQTextMessage in this case). i.e. If I have 10
subscribers and send 100 messages, I end up with 2001 messages in memory if
none are consumed. That's 1 message cached in the producer for sending and
2000 others that result from the sends. I've set copyMessageOnSend to false
in both the producer and consumers, but 1) looking at the source of
ActiveMQConnection, this setting seems to not be used, and 2) if it were
used, I suspect it should only need to be set on producers.

In addition to the number of messages being created, they are going through
some sort of marshaling/unmarshaling process, which causes their related
ActiveMQTopic object to also be replicated a number of times: once for every
two messages that exist, in fact. I assume something like this is happening:

1) producer puts message in topic
2) topic creates a copy of each message for each consumer and pushes to
consumer via marshaling mechanism
3) consumer unmarshals message resulting in another message instance plus a
topic instance

That would mean that step 2 creates one message per subscriber, and step 3
creates one message and one topic per subscriber, which accounts for the
numbers I'm seeing.

My main question is how to get the number of message objects down. Ideally,
I'd like to see it at 1 since the producer is just sending the same message
over and over right now. Any hints?
View this message in context:
Sent from the ActiveMQ - User mailing list archive at

View raw message