Publish/Subscribe
我們將會投遞一個消息給多個消費者,這種模式被稱為“publish/subscribe”
通俗的講,前面的是點對點隊列模型,現在講的是發布訂閱模型。
Exchanges
producer:一個發送消息的用戶應用程序
queue:一個存儲消息的緩沖區
consumer:一個接收消息的用戶應用程序
在RabbitMQ的消息模型中,一個核心的概念是,生產者從來都不是將消息直接發到隊列中的。事實上,生產者根本就不知道消息會被投遞到哪個隊列。代替的,生產者只能講消息發送到一個exchange。一個exchange做的事情非常簡單,一方面它從生產者那里接收消息,另一方面它將消息推送給隊列。exchange必須精確地指定它接收到的消息是做什么的。到底是將這條消息投遞到某一個特別的隊列呢?還是投遞到多個隊列?還是應該丟棄。這些規則是通過exchange的類型定義的。
exchange的類型有四種:direct,?topic,?headers,?fanout
fanout這種類型的exchange最簡單,將接收到的所有消息都廣播給它所知道的隊列。
Temporary queues
給隊列一個名字很重要,尤其是當你想要在生產者和消費者之間共享一個隊列的時候。
在Java客戶端中,支持queueDeclare()不帶任何參數,這樣講創建一個非持久化的、排它的、自動刪除的、名稱隨機的字符串。
?
Routing
Bindings
binging是一個exchange和一個queue之間的關系。可以簡單的讀作:queue對來自這個exchange的消息感興趣。
Direct exchange
按照binding key來路由
?
小結:
1、臨時隊列和永久隊列
2、exchange類型有四種,其中fanout是將它收到的所有消息廣播給它知道的所有隊列;direct是根據routeKey來投遞
3、exchange和queue之間的關系叫binding
?
參考 ?http://www.rabbitmq.com/tutorials/tutorial-four-java.html