RabbitMQ的Queue、Exchange和Binding含義和關係

1、從AMQP協議可以看出,Queue、Exchange和Binding構成了AMQP協議的核心
Producer
消息生產者,即投遞消息的程序
Broker
消息隊列服務器實體
  Exchange消息交換機,它指定消息按什麼規則,路由到哪個隊列
  Binding綁定,它的作用就是把Exchange和Queue按照路由規則綁定起來
  Queue消息隊列載體,每個消息都會被投入到一個或多個隊列
Consumer:消息消費者,即接受消息的程序

2、Exchange的三種主要類型:Fanout、Direct和Topic
2.1、FanoutExchange會忽略RoutingKey的設置,直接將Message廣播到所有綁定的Queue中
2.2、DirectExchange是RabbitMQ默認的Exchange,完全根據RoutingKey來路由消息。設置Exchange和Queue的Binding時需指定RoutingKey(一般爲QueueName),發消息時也指定一樣的RoutingKey,消息就會被路由到對應的Queue
2.3、TopicExchange和DirectExchange類似,也需要通過RoutingKey來路由消息,區別在於DirectExchange對RoutingKey是精確匹配,而TopicExchange支持模糊匹配。分別支持*和#通配符,*表示匹配一個單詞,#則表示匹配沒有或者多個單詞
2.4、HeadersExchange會忽略RoutingKey而根據消息中的Headers和創建綁定關係時指定的Arguments來匹配決定路由到哪些Queue HeadersExchange的性能比較差,而且DirectExchange完全可以代替它,所以不建議使用
2.5、DefaultExchange是一種特殊的DirectExchange,當你手動創建一個隊列時,後臺會自動將這個隊列綁定到一個名稱爲空的DirectExchange上,綁定RoutingKey與隊列名稱相同。有了這個默認的交換機和綁定,使我們只關心隊列這一層即可,這個比較適合做一些簡單的應用
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章