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 属性进行匹配。