您的位置:

RabbitMQ六种模式详解

一、RabbitMQ的三大模式

RabbitMQ的三大模式分别是:

  • 点对点模式(Direct模式)
  • 发布订阅模式(Fanout模式)
  • 主题模式(Topic模式)

其中,点对点模式是最简单、也是应用最为广泛的模式。

二、RabbitMQ有几种模式

RabbitMQ共有六种模式:

  • 点对点模式(Direct模式)
  • 发布订阅模式(Fanout模式)
  • 主题模式(Topic模式)
  • 头部模式(Headers模式)
  • RPC模式(Remote Procedure Call)
  • 流模式(Stream模式)

三、RabbitMQ的五种模式

RabbitMQ的五种模式是指除了流模式以外的五种模式,即:

  • 点对点模式(Direct模式)
  • 发布订阅模式(Fanout模式)
  • 主题模式(Topic模式)
  • 头部模式(Headers模式)
  • RPC模式(Remote Procedure Call)

四、RabbitMQ发布订阅模式

发布订阅模式(Fanout模式)是RabbitMQ中最简单的模式之一。它将消息发布到所有已订阅该交换机的队列中,因此不需要指定Routing Key。这种模式的应用场景比如天气预报,由多个不同的客户端订阅相同的天气信息。

// Fanout模式发送信息代码示例
const exchangeName = 'logs';
const message = 'Hello world!';

channel.assertExchange(exchangeName, 'fanout', { durable: false });

channel.publish(exchangeName, '', Buffer.from(message));
console.log(" [x] Sent %s", message);

五、RabbitMQ消息模式

消息模式(Direct模式)是RabbitMQ中最基础的模式之一。它将消息发送到具有特定Routing Key的队列中,以便只有需要该消息的消费者才能接收到它。这种模式的应用场景比如发送邮件,将邮件发送到特定的人。

// Direct模式发送信息代码示例
const queueName = 'hello';
const message = 'Hello world!';

channel.assertQueue(queueName, { durable: false });

channel.sendToQueue(queueName, Buffer.from(message));
console.log(" [x] Sent %s", message);

六、RabbitMQ集群模式有几种

RabbitMQ的集群模式有两种:

  • 镜像队列模式(Mirror Queue)
  • 仲裁队列模式(Quorum Queue)

镜像队列模式将队列的所有消息在集群中的节点之间进行复制,以实现高可用性的目的。而仲裁队列模式则采用Raft算法,通过仲裁节点对队列中的消息进行复制和同步。

七、RabbitMQ常用工作模式

RabbitMQ常用的工作模式有:

  • 简单工作模式
  • 工作队列模式
  • 发布订阅模式
  • 路由模式
  • 主题模式

其中,发布订阅模式和主题模式介绍过了,其他模式的详细介绍可参考文末给出的代码链接。

八、RabbitMQ队列模式

RabbitMQ队列模式分为两种:

  • 独占队列(Exclusive Queue)
  • 自动删除队列(Auto-delete Queue)

独占队列只能被一个连接访问,适用于在同一连接中处理带有多个消息处理者的任务。而自动删除队列则在不再被使用时自动删除,通常用在临时队列中。

参考资料