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-tp17442075s2354p17442075.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.