路由(Exchange)
Direct
Direct类型exchange的路由算法是很简单的:要想一个消息能到达这个队列,需要binding key和routing key正好能匹配得上。
Headers
通过添加属性key-value匹配
Fanout
将消息分发到所有的绑定队列,无routingkey的概念
Topic
topic类型的exchange上时不能随意指定routing_key(一定是指由一系列由点号连接单词的字符串,单词可以是任意的,但一般都会与消息或多或少的有些关联)。 Routing key的长度不能超过255个字节。
- *(星号):可以(只能)匹配一个单词
- #(井号):可以匹配多个单词(或者零个)
-
实例:
生产者端路由 消费者端路由 是否收到消息 空 * N .. #.* Y #.test.t #.* Y test.ab-1 test.#-1 N test.#-1 test.#-1 Y test.test.-1 test.#-1 N test.ab-1 test.*-1 N test.a-1 test.*-1 N test.*-1 test.*-1 N
当一个队列被绑定为binding key为”#”时,它将会接收所有的消息,此时和fanout类型的exchange很像。 当binding key不包含”*”和”#”时,这时候就很像direct类型的exchange