activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Davies <rajdav...@gmail.com>
Subject Re: VM transport not using pass-by-reference
Date Wed, 28 May 2008 22:18:05 GMT
Hi Ryan,

how are you setting copyMessageOnSend - and are the consumers using  
vm://transport too ?

cheers,

Rob

http://open.iona.com/products/enterprise-activemq
http://rajdavies.blogspot.com/



On 23 May 2008, at 23:32, 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-tp17442075s2354p17442075.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>



Mime
View raw message