RabbitMQ 路由
四种基本类型:
Direct 交换器。
![](https://static001.geekbang.org/infoq/5c/5c21267bcf492e1494d1ab821a4c4719.png)
Fanout 交换器。
Direct交换器使得队列能够接收特定目的的消息。不同于此, fanout 交换器并不作区分。所有发往 fanout 交换器的消息会被投递到所有绑定到该交换器上的队列中。由于 RabbitMQ不需要在投递消息时检测路由键,这将带来可观的性能优势 。
![](https://static001.geekbang.org/infoq/71/7165b28bd857e4251450ecdfa6906653.png)
Topic 交换器 。
类似于 direct交换器, topic交换器会将消息路由至匹配路由键的任一队列中。但是通过采用句点分隔的形式,队列可以通过使用基于通配符的模式匹配的方式来绑定到路由键上。通过使用星号(*)和井号(#〉字符,你可以在同一时刻匹配路由键的特定部分,甚至是多个部分 。星号将会匹配路由键中下一个句点前的所有字符 ,而井号键将会匹配接下来所有的字符,包括句点。
![](https://static001.geekbang.org/infoq/c9/c98f8d8b207a4473e58c4f76cfa67426.png)
Headers 交换器。
通过采用消息属性中的 headers 表支持任意的路由策略 。 绑定至 headers 交换器的队列会向 Queue.Bind 参数中传入键值对数组以及 x-match 参数。
交换器之间路由:
![](https://static001.geekbang.org/infoq/3e/3e2182fafcb47ee146c64855e1845782.png)
一致性胎希交换器路由:
![](https://static001.geekbang.org/infoq/90/90bcf753364771108b32796ae52aebad.png)
总结:
![](https://static001.geekbang.org/infoq/35/354feae38c48065234d660824e83cad8.png)
评论