訊息佇列

weixin_34253539發表於2018-12-05

一、訊息模型

  1. 點對點模型:訊息生產者向佇列中傳送一個訊息後,只能被一個消費者消費


    13880937-578145fa1fa60c60.png
    未命名檔案.png
  2. 釋出/訂閱:生產者傳送一個訊息,多個消費者從該頻道訂閱並消費


    13880937-6ecf9537d7a1765b.png
    未命名檔案-2.png

    釋出訂閱模式使用非同步,生產者傳送完訊息後不等待返回,繼續工作。

  • 與觀察者模式的區別:觀察者模式使用同步工作,生產者和消費者不透明,也就是生產者直到自己產生的訊息被哪個消費者消費了。而釋出訂閱非同步工作,生產者只管生產訊息,往頻道里一扔就不管了,不關心被消費者消費掉了。
    二、應用場景
    1、非同步處理:比如使用者註冊時傳送啟用郵件,把傳送郵件和驗證的工作給另一個程式處理,主程式發一個訊息給郵件程式,立即返回繼續處理後序邏輯。當然,這種應用需要系統允許非同步處理。
    2、流量削峰:高併發情況下,將請求放到訊息佇列裡,由伺服器根據負載適時提取訊息處理。
    3、應用解耦:各模組間不直接呼叫,通過訊息佇列選擇性訂閱訊息,完成呼叫。
    三、可靠性
  1. 傳送端一定能將訊息放進佇列
    實現方法:在本地建表,儲存資訊與業務資料,業務端的事務提交之後將訊息傳送到佇列,如果成功則刪除表中的資料,否則重傳
  2. 接收端一定能從佇列中收到訊息
    實現方法:保證訊息具有唯一編號,並用日誌表記錄已經消費的訊息編號。

相關文章