JMS(三)PTP和Pub/Sub模型

本文深入探讨了JMS中的两种主要消息模型:点对点(PTP)和发布/订阅(Pub/Sub)。PTP模型基于队列,允许消息异步传输,即使消费者离线也能保存消息。Pub/Sub模型通过主题进行消息发布和订阅,支持非持久和持久订阅,确保即使在离线状态下也能接收到所有消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.PTP

  • point-to-point 点对点模型。定义了客户端如何向队列发送消息,从队列接收消息,以及浏览队列中的消息。PTP模型是基于队列的,生产者发消息到队列,消费者从队列接收消息,队列的存在使得消息的异步传输成为可能,JMS Provider提供工具管理队列的创建、删除。

1.1PTP的特点

  1. session关闭时,有一些消息已经被收到,但没有被签收(acknowledge),当消费者下次连接到相同的队列时这些消息会被再次接受
  2. 用户在receive()方法中设定了消息选择条件,不符合条件的消息会留在队列中,不会被接收到
  3. 队列可以长久的保存消息知道 消费者收到消息。消费者不需时刻和队列保持激活状态,消息不会丢失

2.Pub/Sub

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

2.1Pub/Sub特点

  1. 消息订阅分非持久订阅和持久订阅
  • 非持久订阅,只有当客户端处于激活状态,也就是和JMS Provider保持连接状态才能收到发送到某个主题的消息,当客户端处于离线状态,这个时间段发送到主题的消息会丢失
  • 持久订阅,客户端向JMS注册一个失败自己身份的ID,当这个客户端处于离线时JMS provider回味这个ID保存所有发送到主题的消息,当客户再次连接到JMS Provider时,会根据自己的ID得到所有当自己处于离线时发送到主题的消息
  1. 用户在receive()方法中设定了消息选择条件,不符合条件的消息不会被接收到
  2. 非持久订阅下,不能恢复或重新派送一个未签收的消息,只有持久订阅才能恢复或重新派送一个未签收的消息
  3. 当所有的消息必须被接受,则用持久订阅
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值