The principal players in a JMS system are messaging clients, message destinations, and a JMS-compatible messaging provider .
Messaging clients produce and consume messages. Typically, messaging takes place asynchronously; a client produces a message and sends it to a message destination, and some time later another client receives the message. Message clients can be implemented using JMS, or they can use a native messaging API to participate in the messaging system. If a native message client (e.g., a client using the native IBM MQ Series APIs) produces a message to a message destination, a JMS connection to the native message system is responsible for retrieving the message, converting it into the appropriate JMS message representation, and delivering it to any relevant JMS-based clients.
Message destinations are places to and from which JMS clients send and receive messages. Message destinations are created within a JMS provider that manages all of the administrative and runtime functions of the messaging system. At a minimum, a JMS provider allows you to specify a network address for a destination, allowing clients to find the destination on the network. But providers may also support other administrative options on destinations, such as persistence options, resource limits, and the like.
Generally speaking, asynchronous messaging usually comes in two flavors: a message can be addressed ...