Java高級——消息隊列的應用場景

總結了所有消息隊列的知識點,本文章將帶領讀者來學習消息隊列的應用場景

Java高級——消息隊列的應用場景

消息隊列的主要特點就是異步處理,這樣做的好處就是解藕減少請求時間

  • 多個應用之間的解藕;
  • 多個應用之間的耦合,由於消息是平臺無關和語言無關的,而且語義上也不再是函數調用,因此更適合作為多個應用之間的松耦合的接口。基於消息隊列的耦合,甚至不需要發送方和接收方同時在線。
  • 如:下訂單的過程,要從訂單系統下訂單,同時到庫存系統去庫存。
  • 應用內的同步行為變異步;
  • 如:用戶註冊的過程,寫完數據庫後,發郵件、發短信通知等行為其實都不是用戶關心的必要行為,都可以通過消息隊列變成異步行為。
Java高級——消息隊列的應用場景


除此之外,還可以利用消息隊列的個別特徵:

  • 發佈訂閱:做一對一或者一對多的廣播,甚至是制定路由規則。
  • 任務分發:消息發送即“佈置工作”,消息接收即“處理任務”。多個消息接收者分佈式部署,提升應用併發效率及可用性。
  • 確認反饋:
  1. 在消息驅動的架構下,系統分解為消息隊列,和消息製造者和消息消費者,一個處理流程可以根據需要拆成多個階段,階段之間用隊列連接起來,前一個階段處理的結果放入隊列,後一個階段從隊列中獲取消息繼續處理。
  2. 將邏輯通過消息隊列解藕時,可能會帶來數據不一致性,有的是短暫的,原來是沉重的數據庫事務去做的話,需要有一定的“補償“機制……
  • 可持久化:當機的情況下用的到。
Java高級——消息隊列的應用場景

為什麼異步就意味著減少請求時間?

比如訂單處理,就可以由前端應用將訂單信息放到隊列,後端應用從隊列裡依次獲得消息處理,高峰時的大量訂單可以積壓在隊列裡慢慢處理掉。由於同步通常意味著阻塞,而大量線程的阻塞會降低計算機的性能。

Java高級——消息隊列的應用場景


分享到:


相關文章: