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