RabbitMQ之Exchange
RabbitMQ之Exchange
一、概念
什么是Exchange
Exchange是消息队列RabbitMQ的消息路由代理。生产者向消息队列RabbitMQ发送消息时,不会直接将消息发送到Queue,而是先将消息发送到Exchange,由Exchange将消息路由到一个或多个Queue。Exchange根据Binding Key、Routing Key以及Headers属性路由消息。
二 Exchange使用详情
2.1、Direct Exchange
-
路由规则
Direct Exchange根据Binding Key和Routing Key完全匹配的规则路由消息。 -
使用场景
Direct Exchange适用于通过简单字符标识符区分消息的场景。Direct Exchange常用于单播路由。 -
匹配示例
Direct Exchange根据Binding Key和Routing Key完全匹配的规则路由消息
Message | Routing Key | Binding Key | Queue |
---|---|---|---|
Message A | img.create | img.create | Queue A |
Message B | img.log | img.log | Queue B |
2.2、Topic Exchange
-
路由规则
Topic Exchange根据Binding Key和Routing Key通配符匹配的规则路由消息。Topic Exchange支持的通配符包括星号()和井号(#)。星号()代表一个英文单词(例如cn)。井号(#)代表零个、一个或多个英文单词,英文单词间通过英文句号(.)分隔,例如cn.zj.hz。 -
使用场景
Topic Exchange适用于通过通配符区分消息的场景。Topic Exchange常用于多播路由。例如,使用Topic Exchange分发有关于特定地理位置的数据。 -
路由示例
Topic Exchange根据Binding Key和Routing Key通配符匹配的规则路由消息