RabbitMQ 6种工作模式-Publish/Subscribe模式(订阅模式)

说明

在订阅模型中,多了一个 Exchange 角色,说明:

  • P:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是发给X(交换机)
  • C:消费者,消息的接收者,会一直等待消息到来
  • Queue:消息队列,接收消息、缓存消息
  • Exchange:交换机(X)

注意:这是模式之一,具体实现有:

  • Fanout广播订阅模式
  • Routing路由模式
  • Topics通配符模式

Exchange交换机 作用

  • 接收生产者发送的消息。
  • 转发消息,如:转发给所有队列、转发给某个队列 或是 将消息丢弃。到底如何操作,取决于Exchange的类型。

注意: Exchange(交换机)只负责 转发消息,不具备存储消息的能力,因此如果没有任何队列与 Exchange 绑定,或者没有符合路由规则的队列,那么消息会丢失!

Exchange类型

Exchange有常见以下3种类型:

  • Fanout:广播,将消息交给所有绑定到交换机的队列
  • Direct:定向,把消息交给符合指定routing key 的队列
  • Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列

特点

  • 一个生产者,多个消费者
  • 每一个消费者都绑定一个队列
  • 每个队列都要 绑定交换机
  • 生产者 不是 将消息直接发送到队列,而是 发送给交换机
  • 生产者发送的消息,经过交换机到达队列,实现 一个消息被多个消费者获取的目的

发布订阅模式 与 工作队列模式的区别

交换机

【发布/订阅模式】需要定义交换机
【工作队列模式】 没有交换机

队列

【发布/订阅模式】需要设置 队列和交换机的绑定
【工作队列模式】不需要设置(底层是将队列绑定到默认的交换机)

发送消息

【发布/订阅模式】的生产者,向交换机发送消息;
【工作队列模式】的生产者,向队列发送消息(底层使用默认交换机)


原文出处:/show_1IX1inbwJGGQ.html