1. 程式人生 > >RabbitMQ(訊息中介軟體)在工作中的應用場景

RabbitMQ(訊息中介軟體)在工作中的應用場景

 

RabbitMQ(訊息中介軟體)在工作中的應用場景

 1、跨系統的非同步通訊,所有需要非同步互動的地方都可以使用訊息佇列。就像我們除了打電話(同步)以外,還需要發簡訊,發電子郵件(非同步)的通訊方式。

  2、多個應用之間的耦合,由於訊息是平臺無關和語言無關的,而且語義上也不再是函式呼叫,因此更適合作為多個應用之間的鬆耦合的介面。基於訊息佇列的耦合,不需要傳送方和接收方同時線上。在企業應用整合(EAI)中,檔案傳輸,共享資料庫,訊息佇列,遠端過程呼叫都可以作為整合的方法。

  3、應用內的同步變非同步,比如訂單處理,就可以由前端應用將訂單資訊放到佇列,後端應用從佇列裡依次獲得訊息處理,高峰時的大量訂單可以積壓在佇列裡慢慢處理掉。由於同步通常意味著阻塞,而大量執行緒的阻塞會降低計算機的效能。

  4、訊息驅動的架構(EDA),系統分解為訊息佇列,和訊息製造者和訊息消費者,一個處理流程可以根據需要拆成多個階段(Stage),階段之間用佇列連線起來,前一個階段處理的結果放入佇列,後一個階段從佇列中獲取訊息繼續處理。

  5、應用需要更靈活的耦合方式,如釋出訂閱,比如可以指定路由規則。

  6、跨區域網,甚至跨城市的通訊(CDN行業),比如北京機房與廣州機房的應用程式的通訊。

 

  這裡還有一種情況,同時有大量使用者註冊你的軟體,再高併發情況下注冊請求開始出現一些問題,例如郵件介面承受不住,或是分析資訊時的大量計算使cpu滿載,這將會出現雖然使用者資料記錄很快的新增到資料庫中了,但是卻卡在發郵件或分析資訊時的情況,導致請求的響應時間大幅增長,甚至出現超時,這就有點不划算了。面對這種情況一般也是將這些操作放入訊息佇列(生產者消費者模型),訊息佇列慢慢的進行處理,同時可以很快的完成註冊請求,不會影響使用者使用其他功能。

文章出自:https://www.cnblogs.com/histlyb/p/6951843.html