JMS is an excellent solution for asynchronous data transfers in enterprise programming. JMS is appropriate with architectures requiring either a one-to-many broadcast (publish/subscribe), a point-to-point communication (PTP), or both. Because JMS is a centralized message server, JMS client components are loosely coupled.
The publish/subscribe pattern allows one client to broadcast information to multiple recipients. This pattern is an integral part of a JMS messaging domain. With message-driven beans, the EJB container uses the bean's deployment descriptor to subscribe the bean. Publishers and subscribers use topic destinations for messages.