Hi Jason,

those operations are costly and if your component must open/close it for
every message it will affect performances. In those cases it is recommended
to use pool connection factory which caches those object and improve
performances.

See http://activemq.apache.org/jmstemplate-gotchas.html for some more info
on this topic (in case of Spring)

Regards
-- 
Dejan Bosanac - http://twitter.com/dejanb
-----------------
The experts in open source integration and messaging - http://fusesource.com
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net


On Fri, Nov 18, 2011 at 1:30 AM, Jason Dillon <ja...@planet57.com> wrote:

> I'm wondering what sort of overhead there is to create and then close) the
> components needed to send a message, specifically after you have a started
> connection and using a vm:// transport.
>
> I'm working on implementing distributed eventing for a server which
> already has its own eventing built-in (so adapting its events to JMS
> messages published to topics).  The events can come from any thread and be
> sent to different topics based source event details.  That seems to mean
> that for each local event I have to:
>
> 1) reference destination
> 2) create session
> 3) create producer
> 4) build message for event and send
> 5 ) close producer and session (discard destination)
>
> #1 looks like its just object creation, but has some parsing of physical
> name (quite a few ops as it looks like)... so could potentially cache these
> (trade a bit of memory for a string lookup over always creating new
> instance)?
>
> Not sure what overhead there is for #2, #3 or #5.  Is there any
> documentation on roughly what these operations cost?
>
> The destination + session could change so #3 would have to be done
> anyways, hopefully its cheap?  If #2 is not super cheap, then perhaps its
> better to have the local event handler queue up the publish in a
> BlockingQueue (or similar) so that a single thread + session (or
> potentially small pool of thread+session) could be used to a actually
> perform the publish?
>
> Does anyone have any insight on to what would be best option for least
> overhead for this use-case?
>
> --jason

Reply via email to