標籤:ccf 接收 完成 非同步執行 通訊 com https back ike
RabbitMQ是一個在AMQP基礎上完整的,可複用的企業訊息系統。他遵循Mozilla Public License開源協議。
MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入隊列的訊息(針對應用程式的資料)來通訊,而無需專用連線來連結它們。消 息傳遞指的是程式之間通過在訊息中發送資料進行通訊,而不是通過直接調用彼此來通訊,直接調用通常是用於諸如遠端程序呼叫的技術。排隊指的是應用程式通過 隊列來通訊。隊列的使用除去了接收和發送應用程式同時執行的要求。
什麼叫訊息佇列
訊息(Message)是指在應用間傳送的資料。訊息可以非常簡單,比如只包含文本字串,也可以更複雜,可能包含內嵌物件。
訊息佇列(Message Queue)是一種應用間的通訊方式,訊息發送後可以立即返回,由訊息系統來確保訊息的可靠傳遞。訊息發行者只管把訊息發布到 MQ 中而不用管誰來取,訊息使用者只管從 MQ 中取訊息而不管是誰發布的。這樣發行者和使用者都不用知道對方的存在。
為何用訊息佇列
從上面的描述中可以看出訊息佇列是一種應用間的非同步協作機制,那什麼時候需要使用 MQ 呢?
以常見的訂單系統為例,使用者點擊【下單】按鈕之後的商務邏輯可能包括:扣減庫存、產生相應單據、發紅包、發簡訊通知。在業務發展初期這些邏輯可能放在一起同步執行,隨著業務的發展訂單量增長,需要提升系統服務的效能,這時可以將一些不需要立即生效的操作拆分出來非同步執行,比如發放紅包、發簡訊通知等。這種情境下就可以用 MQ ,在下單的主流程(比如扣減庫存、產生相應單據)完成之後發送一條訊息到 MQ 讓主流程快速完結,而由另外的單獨線程拉取MQ的訊息(或者由 MQ 推送訊息),當發現 MQ 中有發紅包或發簡訊之類的訊息時,執行相應的商務邏輯。
以上是用於業務解耦的情況,其它常見情境包括最終一致性、廣播、錯峰流控等等。
個人認為:訊息佇列就是為了讓我們的讓我們的處理機制的效率提升 就是根據不同的需求來進行處理不同的機制 而不是一起執行進而提高了整個程式的效率,並且可以我們的訊息放入隊列之後就不管後面的使用者了 我繼續執行我的程式 後面的程式如何使用我就不管了 也是大大提升了程式的效率
應用詳情
RabbitMQ 訊息佇列