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