0%

「RabbitMQ」工作模式介绍

  • Simple

    • 最简单常用的模式

          graph LR
      P((P生产者)) -->Q[消息队列]
      Q --> C((C消费者))
      style Q fill: #CCC, stroke-width:0
  • Work

    • 一个消息只能被一个消费者获取

          graph LR
      P((P生产者)) -->Q[消息队列]
      Q --> C1((C1消费者))
      Q --> C2((C2消费者))
      style Q fill: #CCC, stroke-width:0
  • Publish/Subscribe

    • 消息被路由投递给多个队列,一个消息被多个消费者获取
          graph LR
      P((P生产者)) --> X(X交换机)
      X --> Q1[消息队列1]
      X --> Q2[消息队列2]
      Q1 --> C1((C1消费者))
      Q2 --> C2((C2消费者))
      style Q1 fill: #CCC, stroke-width:0
      style Q2 fill: #CCC, stroke-width:0
  • Routing

    • 一个 消息被多个消费者获取。并且消息的目标队列可被生产者指定
          graph LR
      P((P生产者)) --> X(X交换机
      type=direct) X --error--> Q1[消息队列1] X --error--> Q2[消息队列2] X --info--> Q2[消息队列2] X --warning--> Q2[消息队列2] Q1 --> C1((C1消费者)) Q2 --> C2((C2消费者)) style Q1 fill: #CCC, stroke-width:0 style Q2 fill: #CCC, stroke-width:0
  • Topic

    • 一个消息被多个消费者获取。消息的目标queue可用BindingKey以通配符(#: 一个或多个词,*: 一个词)的方式指定

          graph LR
      P((P生产者)) --> X(X交换机
      type=topic) X --*.orange.*--> Q1[消息队列1] X --*.*.rabbit--> Q2[消息队列2] X --lazy.#--> Q2[消息队列2] Q1 --> C1((C1消费者)) Q2 --> C2((C2消费者)) style Q1 fill: #CCC, stroke-width:0 style Q2 fill: #CCC, stroke-width:0