關於RabbitMQ的Exchange類型html
參考地址:《RabbitMQ學習系列(四): 幾種Exchange 模式》git
github地址:https://github.com/ChenWes/RabbitMQDemogithub
- 手動測試過,Direct和Fanout兩種路由模式下,Queue均可以有多個接收者,若是有多個接收者監控同一個Queue,那麼會輪流將消息發送至接收者
- Fanout路由模式下,關鍵在於路由,若是將路由與多個Queue進行綁定,則會多個Queue的接收者同時收到消息(同一個Queue多個接收者的狀況依然會存在)
Direct Exchange:測試
全部發送到Direct Exchange的消息被轉發到RouteKey中指定的Queue
注意:Direct模式能夠使用RabbitMQ自帶的Exchange:default Exchange,因此不須要將Exchange進行任何的綁定(binding)操做,消息傳遞時,RouteKey必須徹底匹配纔會被隊列接收,不然該消息會被拋棄url
Fanout Exchange:spa
不處理路由鍵,只須要簡單的將隊列綁定到交換機上
發送到交換機的消息都會被轉發到與該交換機綁定的全部隊列上
Fanout交換機轉發消息是最快的.net
Topic Exchange:htm
全部發送到Topic Exchange的消息被轉發到全部關心RouteKey中指定Topic的Queue上
Exchange將RouteKey和某Topic進行模糊匹配,此時隊列須要綁定一個Topic
注意:能夠使用通配符進行模糊匹配
符號「#」匹配一個或多個詞
符號「*」匹配很少很多一個詞(只能匹配一個詞)
例如「log.#」能匹配到「log.info.oa」
"log.*"只會匹配到"log.error"blog