AMQP

RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现。

1. 核心概念

  • Message

    • 消息,消息是不具名的,它由消息头和消息体组成
    • 消息头,包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久性存储)等
  • Publisher

    • 消息的生产者,也是一个向交换器发布消息的客户端应用程序
  • Exchange

    • 交换器,将生产者消息路由给服务器中的队列
    • 类型有direct(默认),fanout, topic, 和headers,具有不同转发策略
  • Queue

    • 消息队列,保存消息直到发送给消费者
  • Binding

    • 绑定,用于消息队列和交换器之间的关联
  • Connection

    • 网络连接,比如一个TCP连接
  • Consumer

    • 消息的消费者,表示一个从消息队列中取得消息的客户端应用程序
  • Virtual Host

    • 虚拟主机,表示一批交换器、消息队列和相关对象。
    • vhost 是 AMQP 概念的基础,必须在连接时指定
    • RabbitMQ 默认的 vhost 是 /
  • Broker

    • 消息队列服务器实体

2. 运行机制

消息路由

AMQP 中增加了Exchange 和 Binding 的角色, Binding 决定交换器的消息应该发送到那个队列

Exchange 类型

    1. direct

      点对点模式,消息中的路由键(routing key)如果和 Binding 中的 binding
      key 一致, 交换器就将消息发到对应的队列中。

    2. fanout

      广播模式,每个发到 fanout 类型交换器的消息都会分到所有绑定的队列上去

    3. topic

      将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。它将路由键和绑定键的字符串切分成单词,这些单词之间用点隔开。
      识别通配符: # 匹配 0 个或多个单词, *匹配一个单词

原文地址:https://www.cnblogs.com/buxiu/p/13816729.html