The JMS API supports two distinct models: • Point-to-point • Publish-and-subscribe
Point-to-point model Under the
point-to-point messaging system, messages are routed to individual consumers who maintain queues of incoming messages. This messaging type is built on the concept of
message queues, senders, and receivers. Each message is addressed to a specific queue, and the receiving clients extract messages from the queues established to hold their messages. While any number of producers can send messages to the queue, each message is guaranteed to be delivered, and consumed by one consumer. Queues retain all messages sent to them until the messages are consumed or until the messages expire. If no consumers are registered to consume the messages, the queue holds them until a consumer registers to consume them.
Publish-and-subscribe model The
publish-and-subscribe model supports publishing messages to a particular message "topic".
Subscribers may register interest in receiving messages
published on a particular message topic. In this model, neither the publisher nor the subscriber knows about each other. A good analogy for this is an anonymous bulletin board. • Zero or more consumers will receive the message. • There is a timing dependency between publishers and subscribers. The publisher has to create a message topic for clients to subscribe. The subscriber has to remain continuously active to receive messages, unless it has established a durable subscription. In that case, messages published while the subscriber is not connected will be redistributed whenever it reconnects. JMS provides a way of separating the application from the
transport layer of providing data. The same Java
classes can be used to communicate with different JMS providers by using the
Java Naming and Directory Interface (JNDI) information for the desired provider. The classes first use a
connection factory to connect to the queue or topic, and then use populate and send or publish the messages. On the receiving side, the clients then receive or subscribe to the messages. == URI scheme ==