Reputation: 2841
In this nice article on JMS, Bruce Snyder (Author of "ActiveMQ in Action") mentions:
[one] of the options for implementing a message listener to be used with the Spring DMLC is using javax.jms.MessageListener - It is a standardized interface from the JMS spec but handling threading is up to you.
He doesnt talk about threading in the other two options: Spring SessionAwareMessageListener and MessageListenerAdapter.
My question is: What additional threading concerns are to be addressed with the use of the plain javax.jms.MessageListener, compared to the other two approaches ?
I am thinking that regardless of what option I choose from the above 3, if my listener will be receiving messages on multiple threads, my listener implementation has to be thread-safe.
I went through the examples Bruce had created in github for all the three options. I didnt see any specific handling for threads in any case. The xmls of simple and session-aware consumers are almost the same.
Upvotes: 4
Views: 3008
Reputation: 49935
As long as your not keeping any state in your MessageListener
implementations(through say an instance variable), you don't have to worry about thread-safety with any of the three approaches. If you are keeping state, then like in any multi-threading scenario, you will have to take care of how you synchronize access to the state.
Upvotes: 2