2016 - 2024

感恩一路有你

怎样添加消息队列 消息总线和消息队列区别?

浏览量:4333 时间:2023-03-29 09:01:37 作者:采采

消息总线和消息队列区别?

消息总线包含多个消息队列,即接收到所有消息,内部逻辑决定推送到哪个消息队列。

消息队列的发布订阅原理?

订阅的原理是不同系统之间的重合。Java消息服务(JMS)应用程序接口是Java平台上关于消息中间件(MOM)的API,用于在两个应用程序之间或分布式系统中发送消息以进行异步通信。

对等订阅和发布订阅最初是由JMS定义的。两种模式的主要区别或者说要解决的问题是,发送到队列的消息是否可以重复消费(多订阅)。

1.定义

JMS规范目前支持两种消息模型:点对点(队列)和发布/订阅(主题)。

1.1.点对点:队列,不能重复消费。

消息生产者产生消息并将其发送到队列,然后消息消费者将消息从队列中取出并使用它们。

消息被消费后,队列中没有存储,所以消息消费者不可能消费已经消费的消息。队列支持多个使用者的存在,但是只有一个使用者可以使用一条消息。

1.2.发布/订阅:话题,可以反复消费。

消息生产者(发布者)将消息发布到主题,同时,多个消息消费者(订阅者)消费该消息。与对等模式不同,发布到主题的消息将由所有订阅者使用。

支持订阅组的发布-订阅模式:

在发布-订阅模式下,当发布者的消息量较大时,单个订阅者的处理能力明显不足。实际上,在真实场景中,多个订阅者节点组成一个订阅群来负载均衡话题消息的消费,即群订阅,这样订阅者就可以轻松实现消费力的线性膨胀。可以看到,一个主题下有多个队列,每个队列都是点对点的,队列都是发布订阅的。

2.差异

2.1.点对点模式

生产者向队列发送消息。一个队列可以有许多消费者,但是一条消息只能被一个消费者接受。当没有可用的消费者时,消息将被保存直到有可用的消费者,因此队列实现了可靠的负载平衡。

2.2.发布-订阅模式

发布者向主题发送的消息将仅由订阅主题的订阅者接收。话题实现发布和订阅。当您发布消息时,订阅该主题的所有服务都可以获得该消息,因此1到n个订阅者可以获得该消息的副本。

3.热门车型对比

传统的企业消息队列ActiveMQ遵循JMS规范,实现点对点。点和发布订阅模型,但是其他流行的消息队列RabbitMQ和Kafka不遵循JMS规范。

3.1、RabbitMQ

RabbitMQ实现了AQMP协议,该协议定义了消息路由的规则和方法。生产者通过路由规则将消息发送到不同的队列,消费者根据队列名称消费消息。

RabbitMQ支持内存队列和持久队列,消费者是一个推模型。服务器负责维护消费状态和订阅关系,消费后立即删除消息,不保留历史消息。

(1)点对点

生产者通过路由向队列发送消息,只有一个消费者可以消费它。

(2)更多订阅

当RabbitMQ需要支持多个订阅时,发布者发送的消息通过路由同时写入多个队列,不同的订阅组消耗不同的队列。因此,当支持多个订阅时,消息将被复制多次。

3.2、卡夫卡

Kafka只支持消息持久化,消费者是拉模型,客户端负责维护消费状态和订阅关系。消息消费后,不会立即删除,但会保留历史消息。因此,当支持多个订阅时,将只存储一条消息。但是可能会有重复消费。

(1)点对点amp多订阅

发布者在主题中生成一条消息,不同的订阅组使用这条消息。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。