AMQP协议中的几个重要概念
AMQP协议中的几个重要概念
Queue 是RabbitMQ的内部对象,用于存储消息。RabbitMQ中的消息只能存储在 Queue 中,消费者
从 Queue 中获取消息并消费。
Exchange 生产者将消息发送到 Exchange,由 Exchange 根据一定的规则将消息路由到一个或多
个 Queue 中(或者丢弃)。
Binding RabbitMQ中通过 Binding 将 Exchange 与 Queue 关联起来。
Binding key 在绑定(Binding) Exchange 与 Queue 的同时,一般会指定一个 binding key。
Routing key 生产者在将消息发送给 Exchange 的时候,一般会指定一个 routing key,来指定这个消
息的路由规则。 Exchange 会根据 routing key 和 Exchange Type以及 Binding key 的匹配情况来决
定把消息路由到哪个 Queue。
Exchange Types RabbitMQ常用的Exchange Type有 fanout、 direct、 topic、 headers 这四种。
fanout 这种类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所
有与它绑定的Queue中,这时 Routing key 不起作用。
direct 这种类型的Exchange路由规则也很简单,它会把消息路由到那些 binding key 与 routing
key完全匹配的Queue中。
topic 这种类型的Exchange的路由规则支持 binding key 和 routing key 的模糊匹配,会把消息路
由到满足条件的Queue。 binding key 中可以存在两种特殊字符 *与 #,用于做模糊匹配,其
中 * 用于匹配一个单词,# 用于匹配多个单词(可以是零个),单词以 .为分隔符。
headers 这种类型的Exchange不依赖于 routing key 与 binding key 的匹配规则来路由消息,而
是根据发送的消息内容中的 headers 属性进行匹配。