Point-to-Point (PTP) and Publish/Subscribe (Pub/Sub) are two types of messaging models or messaging domains provided by JMS. Both of these have significant differences and should be used as per the application’s requirement. For instance, point-to-point messaging should be used when each message delivered by a producer should be consumed successfully by one receiver and publish/subscribe messaging should be used when each message delivered by a producer should be consumed by zero or more receivers.
Here is a more detailed difference between the two messaging models:
|1.||Each message is addressed to a virtual channel known as Queue||Each message is addressed to a virtual channel know as Topic|
|2.||One-to-One i.e. a message delivered by a producer is consumed by only one receiver||One-to-Many i.e. a message delivered by a producer (publisher) can be consumed by zero or more receivers (subscribers)|
|3.||A queue can have multiple receivers, but each message is consumed by only one receiver||A topic can have multiple receivers and every receiver receives a copy of each message|
|4.||Pull-based model i.e. client polls the queue for new messages and sends the request||Push-based model i.e. messages are broadcasted to all the subscribers without them having to poll the topic|
|5.||Messages are retained in the queue until they are delivered to the receiver. The receiver can fetch the message even if it was not running when producer sent the messages.||Messages are retained in the topic until they are delivered to the “current“ subscribers.There is an option to have durable subscriptions in pub-sub model which allows the subscriber to dis-connect, reconnect again and collect the messages that were delivered when it was not active.|
|6.||The receiver acknowledges the successful processing of a message.||Acknowledgment is optional.|
Thus whether to use queue or topic as JMS message destination, depends solely on the requirements of a specific application.