点对点和发布订阅总结

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

  1. 如果在Session关闭时有部分消息被收到但还没有被签收(acknowledge),那当消费者下次连接到相同队列时,这些消息还能被再次接受
  2. 队列可以长久的保存消息到消费者收到消息,消费者不需要因为担心消息会丢失而时刻和队列保持激活的链接状态,充分体现了异步传输模式的优势

JMS的发布订阅总结
JMS Pub/Sub模型定义了如何向一个内容节点发布和订阅消息,这些节点被称为topic
主题可以被认为是消息的传输中介,发布者(publisher)发布消息到主题,订阅者(subscribe)从主题订阅消息
主题使得消息订阅者和消息发布者保持互相独立不需要解除即可保证消息的传送

非持久订阅

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

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

一句话:先订阅注册才能接受到发布,只给订阅者发布消息。

持久订阅

客户端首先向注册一个自己的身份ID识别码,当这个客户端处于离线时,生产者会为这个ID保存所有发送到主题的消息,当客户再次连接到这个MQ的时候,会根据消费者的ID得到所有当自己处于离线时发送到主题的消息
当非持久订阅状态下,不能恢复或重新派送一个未签收的消息
持久订阅才能恢复或重新派送一个未签收的消息

用哪个?
当所有的消息必须被接收,则用持久订阅,当消息丢失能容忍,则用非持久订阅

你可能感兴趣的:(点对点和发布订阅总结)