RabbitMQ 是一個實現了AMQP(高級消息隊列協議)的消息隊列,最初起源於金融系統,主要用來實現應用程序間的異步和解耦,可用於在分佈式系統中作消息的存儲轉發異步
相比於傳統的隊列服務概念(消息發送者、隊列、消息接收者),RabbitMQ在發送者和隊列以前增長了一個抽象層——交換器。消息發送者發消息給交換器,交換器根據調度策略把消息發送給隊列(交換器和隊列之間有綁定關係),這樣發消息者和隊列就沒有直接關係,實現了兩者之間的解耦分佈式
注:此圖來源於網上spa
交換機和隊列之間的調度策略有以下四種:blog
1)Direct Exchange:交換機默認的一種模式,是經過key全文匹配找到合適的隊列而後把消息投送隊列
2)Topic Exchange:經過通配符匹配路由
3)Headers Exchange:經過自定義的匹配規則匹配,即當消息的header屬性中包含的鍵值對和exchange自定義的匹配時進行消息投送消息隊列
4)Fanout Exchange:消息廣播模式,此時配置的路由key會被忽略it
注:Exchange自己不會進行消息存儲,若是沒有找到合適的隊列,消息丟失配置