什么是消息队列?
消息队列是一种在应用程序之间传递消息的技术。它提供了一种异步通信模式,允许应用程序在不同的时间处理消
息。消息队列通常用于解耦应用程序,以便它们可以独立地扩展和修改。在消息队列中,消息发送者将消息发送到
队列中,然后消息接收者从队列中接收消息。这种模式允许消息接收者按照自己的节奏处理消息,而不必等待消息
发送者处理完消息。常见的消息队列包括RabbitMQ、Kafka和ActiveMQ等。
接下来主要先描述RabbitMQ
主要模块有Connections, Channels ,Exchanges,Queues和Admin
其中Admin主要是用来管理RabbitMQ的服务资源,可以用来创建用户;
Exchange和Queue是一组传递消息的核心组件;
消息都是通过Queue队列传递;典型的FIFO的队列数据结构。
Exchange交换机则是用来辅助消息分发的。Exchange与Queue之间会建立一种绑定的关系,通过绑定关系,Exchange交换机里发送的消息就可以分发到不同的Queue上。
对于队列,有Classic ,Quorum,Stream三种类型。
Exchange只需要与生产者绑定,消费者方面不需要与Exchange打交道,只要从Queue中消费消息就可以。
Connection和channel
一个Connection可以理解为一个客户端应用,一个应用可以创建多个Channel。用来与RabbitMQ进行交互;
一旦客户端与RabbitMQ建立了连接,就会分配一个AMQP信道 Channel。每个信道都会被分配一个唯一的ID。也可以理解为是客户端与RabbitMQ实际进行数据交互的通道,我们后续的大多数的数据操作都是在信道 Channel 这个层面展开的。
RabbitMQ中进行数据路由的重要组件。消息发送到RabbitMQ中后,会首先进入一个交换机,然后由交换机负责将数据转发到不同的队列中。RabbitMQ中有多种不同类型的交换机来支持不同的路由策略。从Web管理界面就能看到,在每个虚拟主机中,RabbitMQ都会默认创建几个不同类型的交换机来。
Queue结构天生就具有FIFO的顺序,消息最终都会被分发到不同的Queue当中,然后才被消费者进行消费处理。这也是最近RabbitMQ功能变动最大的地方。最为常用的是经典队列Classic。
RabbitMQ 3.8.X版本添加了Quorum队列,3.9.X又添加了Stream队列。从官网的封面就能看到,现在RabbitMQ主推的是Quorum队列。