RabbitMQ

RabbitMQ

基本对象
  • producer
  • channel
    • 多个相互隔离
  • exchange(交换机)
    • Fanout
    • Direct
    • Headers
    • Topic
  • queue
  • consumer
工作模式
  1. work queues

    • graph LR p -->x -->q q -->c1 q -->c2
    • 消息不会被重复消费

    • 适用于消费速度慢,需要多个消费者

  2. publish/subscribe

    • exchange为fanout 模式

    • graph LR p -->x x -->q1 -->c1 x -->q2 -->c2
    • 一条消息会多个消费者同时消费

    • 如:下完订单后,邮件通知用户同时短信通知用户

  3. Routing

    • exchange为direct 模式

    • 根据routing key发送到对应的queue,如果绑定了多个queue那么会都发送

    • routing key绑定在queue上

    • 可取代【发布/订阅】模式(不同的queue上绑定同样的routing key),更强大

  4. Topics(通配符)

    • exchange为Topic 模式

    • Routing的高级版本,Routing是等于,Topics是通配符(# or *)

    • #能匹配一个或多个(每个词中间以.分隔)

    • *只能匹配一个

    • 如:下完订单后,有的想只接收短信,有的想只接收email,有的想全部接收

      • routing key : inform.#.email.#
  5. Header

    • exchange为headers 模式
    • 没有routing key,使用key/value
    • 不常用
  6. RPC

    • exchange为direct 模式

    • 客户端远程调用服务端方法,使用MQ实现RPC的异步调用

    • graph LR p -->queue1 -->c c -->queue2 -->p
      • client发送一条请求消息在队列中
      • server处理好后,发送一条回复消息在另一个队列中
      • client收到 即完成了异步调用
实现步骤
  1. 创建连接
  2. 创建channel
  3. 声明queue
  4. 声明exchange (设置类型)
  5. 绑定queue (设置routing key)
  6. 发布 Basic Publish(指定exchange、routing key、消息体)
  7. 订阅 Basic Consume (指定queue、绑定具体的consumer)
posted @ 2022-02-18 14:13  西西弗斯8  阅读(34)  评论(0)    收藏  举报