FYI - copyMessageOnSend is being used within the ActiveMQSession.send() method.
... if (connection.isCopyMessageOnSend()) { msg = (ActiveMQMessage)msg.copy(); } ... Joe Ryan Stewart wrote: > > I'm trying to use an embedded ActiveMQ instance for some lightweight > message handling. According to the > http://activemq.apache.org/vm-transport-reference.html VM Transport > Reference and > http://activemq.apache.org/how-should-i-use-the-vm-transport.html this FAQ > , the VM transport should pass messages by reference, giving some nice, > lean performance. > > 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 > broker. > > 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: http://www.nabble.com/VM-transport-not-using-pass-by-reference-tp17442075s2354p17536264.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.