Hi,
In my spring+camel integration application we are using SJMS extensively. There are more than 100 producers and more than 50 consumers that we have in our application. Recently I started discovering the usage of threads and noticed from JMX console there are way toooo many threadpools most of which are SJMS.

All our SJMS consumers are transacted thus we are processing all messages synchronously using the artemis consumer thread. Further digging down in the SjmsConsumer I found that the executor threadpool is created even if this endpoint (thus consumer) is configured for synchronous processing. Further dig down in the code confirms that SjmsConsumer itself doesn't uses this executor and it's passed to InOnlyMessageHandler or InOutMessageHandler -- both of which do not use this executor if the processing is to have transaction support (isTransacted()) or configured for synchronous processing (isSynchronous()). This essentially means that with each new SjmsConsumer, a new ThreadPoolExecutor object is created which is never used for transacted or synchronous consumers.

Although all these ThreadPoolExecutor do not have any threads in their pool since this is never used (PoolSize is confirmed to 0 all the times from JMX for these pools) but seeing so many threadpool objects itself made me uncomfortable in first spot. It's only after this much digging that I figured out that it's only ThreadPoolExecutor object without any active thread which we have in our application.

IMHO, it makes sense to enhance SjmsConsumer to skip creation of this executor in doStart method if it's transacted or synchronous consumer. I can see "if (this.executor != null)" checks in SjmsConsumer already (e.g. doStop method) thus this should not impact the flow in any way (may be we'll have to add few more checks like this).

If core developer agrees, I can take up this enhancements with a new pull request.

(My another objective is to dynamically increase/decrease consumer count for SJMS consumer, however that I'll take up in a separate thread).

--
Thanks,
*Avnish Pundir*


--

------------------------------
Disclaimer: The information contained in this communication is confidential, private, proprietary, or otherwise privileged and is intended only for the use of the addressee.Unauthorized use, disclosure, distribution or copying is strictly prohibited and may be unlawful. If you have received this communication in error, please delete this message and notify the sender immediately - Samin TekMindz India Pvt.Ltd. ------------------------------

Reply via email to