JMS--点对点、发布订阅

点对点

点对点模型是基于队列的,生产者发消息到队列,消费者从队列接收消息,队列的存在使得消息的异步传输成为可能。和我们平时给朋友发送短信类似。

  1. 如果在Session关闭时有部分消息已被收到但是还没有被签收(acknowledge),那当消费者下次连接到相同的队列时,这些消息还会被再次接收。

  2. 队列可以长久地保存消息直到消费者收到消息。消费者不需要因为担心消息会丢失而时刻和队列保持激活的连接状态,充分体现了异步传输模式的优势。

Pub/Sub

Pub/Sub模型定义了如何向一个内容节点发布和订阅消息,这些节点被称作topic。

主题可以被认为是消息的传输中介,发布者(publisher)发布消息到主题,订阅者(subscribe)从主题订阅消息。主题使得消息订阅者和消息发布者保持相互独立,不需要接触即可保证消息的传送。

订阅

非持久订阅:

非持久订阅只有当客户端处于激活状态,也就是和MQ保持连接状态才能收到发送到某个主题的消息。

如果消费者处于离线状态,生产者发送的主题消息将会丢失作废,消费者永远不会收到。

先要订阅注册才能接收发布!只给订阅者发布消息。

持久订阅:

客户端首先向MQ注册一个自己的身份ID识别号,当这个客户端处于离线时,生产者会为这个ID保存所有发送到主题的消息,当客户端再次连接到MQ时会根据消费者的ID得到所有当自己处于离线时发送到主题的消息。

非持久订阅状态下,不能恢复或重新派发一个未签收的消息。持久订阅才能恢复或重新派送一个未签收的消息。

注意:当所有消息必须被接受,则用持久订阅。当丢失消息能够被容忍,则用非持久订阅。

发布了641 篇原创文章 · 获赞 1877 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/104057160