RBMQ案例三:發佈/訂閱模式

 

 

在上篇教程中,我們搭建了一個工作隊列,每個任務只分發給一個工作者(worker)。在本篇教程中,我們要做的跟之前完全不一樣 —— 分發一個消息給多個消費者(consumers)。這種模式被稱爲“發佈/訂閱”。
爲了描述這種模式,我們將會構建一個簡單的日誌系統。它包括兩個程序——第一個程序負責發送日誌消息,第二個程序負責獲取消息並輸出內容。
在我們的這個日誌系統中,所有正在運行的接收方程序都會接受消息。我們用其中一個接收者(receiver)把日誌寫入硬盤中,另外一個接受者(receiver)把日誌輸出到屏幕上。最終,日誌消息被廣播給所有的接受(receivers)。
 
1、 交換機(Exchanges)
前面的教程中,我們發送消息到隊列並從中取出消息。現在是時候介紹RabbitMQ中完整的消息模型了。讓我們簡單的概括一下之前的教程:
發佈者(producer)是發佈消息的應用程序。
隊列(queue)用於消息存儲的緩衝。
消費者(consumer)是接收消息的應用程序。
RabbitMQ消息模型的核心理念是:發佈者(producer)不會直接發送任何消息給隊列。事實上,發佈(producer)甚至不知道消息是否已經被投遞到隊列。
發佈者(producer)只需要把消息發送給一個交換機(exchange)。交換機非常簡單,它一邊從發佈者方接收消息,一邊把消息推送到隊列。交換機必須知道如何處理它接收到的消息,是應該推送到指定的隊列還是是多個隊列,或者是直接忽略消息。這些規則是通過交換機類型(exchange type)來定義的。
有幾個可供選擇的交換機類型:
直連交換機(direct):指定的queue才能收到消息。把queue綁定關鍵字,消息發佈端根據關鍵字將消息發送到exchange,exchange根據關鍵字將消息發送到指定隊列;
 
主題交換機(topic): 符合條件的queue才能收到消息.
頭交換機 (headers):
扇型交換機(fanout): 它把消息發送給它所知道的所有隊列

一、新創建一個Exchanges

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