ActiveMQ(六)--PTP模型和Pub/Sub模型

JMS的PTP模型

JMS PTP(Point-to-Point)模型定义了客户端如何向队列发送消息,从队列接收消息,以及浏览队列中的消息。
PTP模型是基于队列的,生产者发消息到队列,消费者从队列接收消息,队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样,队列可以包含各种消息,JMS Provider提供工具管理队列的创建、删除。

PTP的一些特点:
1.如果在Session关闭时,有一些消息已经被收到,但还没有被签收(acknowledged),那么,当消费者下次连接到相同的队列时,这些消息还会被再次接收。
2.如果用户在receive方法中设定了消息选择条件,那么不符合条件的消息会留在队列中,不会被接收到。
3.队列可以长久地保存消息直到消费者受到消息。消费者不需要因为担心消息会丢失而时刻和队列保持激活的连接状态,充分体现了异步传输模式的优势。

JMS的Pub/Sub模型

JMS Pub/Sub模型定义了如何向一个内容节点发布和订阅消息,这些节点被称作topic。
主题可以被认为是消息的传输中介,发布者(publisher)发布消息到主题,订阅者(subscriber)从主题订阅消息。主题使得消息订阅者和消息发布者保持互相独立,不需要接触即可保证消息的传送。
Pub/Sub的一些特点:
1.消息订阅分为非持久订阅和持久订阅
非持久订阅只有当客户端处于激活状态,也就是和JMS Provider保持连接状态才能收到发送到某个主题的消息,而当客户端处于离线状态,这个时间段发到主题的消息将会丢失,永远不会收到。
持久订阅时,客户端向JMS注册一个识别自己身份的ID,当这个客户端处于离线时,JMS Provider会为这个ID保存所有发送到主题的消息,当客户再次连接到JMS Provider时,会根据自己的ID得到所有自己处于离线时发送到主题的消息。
2.如果用户在receive方法中设定了消息选择条件,那么不符合条件的消息不会被接收
3.非持久订阅状态下,不能恢复或重新派送一个未签收的消息。只有持久订阅才能恢复或重新派送一个未签收的消息。
4.当所有的消息必须被接收,则使用持久订阅。当丢失消息能够被容忍,则用非持久订阅。

猜你喜欢

转载自blog.csdn.net/csdn_kenneth/article/details/82085108