Enterprise Integration Zone is brought to you in partnership with:

I currently work in the capacity of Software Engineer at a reputed company in Sri Lanka. I'm most keen in J2EE Technologies and love working with open source libraries which fit my project needs. Very interested in the NoSQL concept and experimenting with various products to find a good blend for our projects within the company. Part time freelancer. Avid contributor in the stackoverflow arena. Android is another area which I am looking at with very keen interest as I believe mobile development is the way forward. Dinuka is a DZone MVB and is not an employee of DZone and has posted 24 posts at DZone. You can read more from them at their website. View Full User Profile

JMS and Async, Don't Mess With It

  • submit to reddit

JMS stands for Java Message Service which is an API which is used by middleware service providers such as ActiveMQ, JBoss MQ, Rabbit MQ, etc. Its main purpose is to allow disparate systems to communicate based on a common platform. Which means that if I have my front end written in .Net and my back end written in Java for example, one way of communicating between the two (other than Webservices etc) is to use a JMS provider in a publisher-subscriber or peer-to-peer configuration.

In our own project we have used JMS not to communicate between two disparate systems but to get the asynchronous capability integrated to our application. What we do is push the message into a queue and get along with the rest of the business process. But it seems this is not the correct way of achieving this. Of course at the end of the day we have achieved asynchronous behavior, but not in the right way. A solution just came to light when Spring 3 was released. Spring 3 provided an implementation allowing asynchronous capability with the @Async annotation. I will not go into the details of this feature as it is very well explained here.

I have changed the previously JMS oriented code which mimicked the asynchronous capability and introduced Spring's Async implementation because I felt it was much cleaner and reduced all handling i needed to do with onMessage(),Connection Factory and the rest of the code needed to deal with JMS queues and topics.
Published at DZone with permission of Dinuka Arseculeratne, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)