基於異步消息模式的通信

基於異步消息模式的通信

使用消息機制時,微服務之間的通信採用異步交換消息的方式來完成。基於消息機制的應用程序通常使用消息代理,它充當服務之間的中介。

消息

消息由消息頭部和消息主體組成。

  • 頭部包括:名稱與值對的集合(描述正在發送的數據的元數據)+其它數據(如唯一消息ID、可選返回地址)。
  • 主體包括:以文本或者二進制格式發送的數據。

消息的類型

  1. 文檔:僅包含數據的通用消息。接收者決定如何解釋它。對命令式消息的回覆是文檔消息的一種使用場景。
  2. 命令:一條等同與RPC請求的消息。它指定要調用的操作及其參數。
  3. 事件:表示發送方這一端發生了重要的事件。事件通常是領域事件,表示領域對象的狀態整改。

消息通道 —服務溝通的機制

消息通過消息通道進行交換。
任意數量的發送方都可以向通道發送消息,任意數量的接收方都可以從通道接收消息。

在這裏插入圖片描述

消息通道的類型

  1. 點對點通道:它向正在從通道中讀取的一個消費者傳遞消息,且只有這一個消費者可以消費消息,不是實時消息,可持久化。命令式消息通常通過點對點通道發送。
  2. 發佈-訂閱通道:它將一條消息發送給所有訂閱的接收方,所有在線的接收方纔可接收到此消息,實時消息,不可持久化。事件式消息通常通過發佈-訂閱通道發送。

使用消息機制的交互方式

1.請求/響應和異步請求/響應

客戶端和服務端通過交換一對消息來實現異步請求/響應方式的交互。

在這裏插入圖片描述

客戶端發送具有回覆通道頭部的命令式消息。服務端將回復消息寫入回覆通道,該回復消息包含與消息標識符具有相同值得相關性ID。客戶端使用相關性ID將回復消息與請求進行匹配。

2.單向通知

客戶端將消息(通常爲命令式消息)發送到服務端所擁有的點對點通道。服務端訂閱該通道並處理該消息,但是服務端不會發回回復。

3.發佈/訂閱

客戶端將消息發佈到由多個接收方讀取的發佈/訂閱通道。對特定領域對象的事件感興趣的服務端只需要訂閱相應的通道。

4.發佈/異步響應

發佈/異步響應通過把發佈/訂閱和請求/相應這倆種方式的元素結合在一起實現。
客戶端發佈一條消息,在消息的頭部中指定回覆通道,這個通道同時也是一個發佈-訂閱通道。消費者將包含相關性ID的回覆消息寫入回覆通道。客戶端通過使用相關性ID來收集響應,以此將回復消息與請求進行匹配。

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