日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

消息(Message)

本文介紹云消息隊列 RocketMQ 版中消息(Message)的定義、模型關系、內部屬性、行為約束及使用建議。

定義

消息是云消息隊列 RocketMQ 版中的最小數據傳輸單元。生產者將業務數據的負載和拓展屬性包裝成消息發送到云消息隊列 RocketMQ 版服務端,服務端按照相關語義將消息投遞到消費端進行消費。

云消息隊列 RocketMQ 版的消息模型具備如下特點:
  • 消息不可變性

    消息本質上是已經產生并確定的事件,一旦產生后,消息的內容不會發生改變。即使經過傳輸鏈路的控制也不會發生變化,消費端獲取的消息都是只讀消息視圖。

  • 消息持久化

    云消息隊列 RocketMQ 版會默認對消息進行持久化,即將接收到的消息存儲到云消息隊列 RocketMQ 版服務端的存儲文件中,保證消息的可回溯性和系統故障場景下的可恢復性。

模型關系

在整個云消息隊列 RocketMQ 版的領域模型中,消息所處的流程和位置如下:消息
  1. 消息由生產者初始化并發送到云消息隊列 RocketMQ 版服務端。
  2. 消息按照到達云消息隊列 RocketMQ 版服務端的順序存儲到隊列中。
  3. 消費者按照指定的訂閱關系從云消息隊列 RocketMQ 版服務端中獲取消息并消費。

消息內部屬性

系統保留屬性

主題名稱
  • 定義:當前消息所屬的主題的名稱。集群內全局唯一。更多信息,請參見主題(Topic)
  • 取值:從客戶端SDK接口獲取。
消息類型
  • 定義:當前消息的類型。
  • 取值:從客戶端SDK接口獲取。云消息隊列 RocketMQ 版支持的消息類型如下:
    • Normal:普通消息,消息本身無特殊語義,消息之間也沒有任何關聯。

    • FIFO:順序消息云消息隊列 RocketMQ 版通過消息分組MessageGroup標記一組特定消息的先后順序,可以保證消息的投遞順序嚴格按照消息發送時的順序。

    • Delay:定時/延時消息,通過指定延時時間控制消息生產后不要立即投遞,而是在延時間隔后才對消費者可見。

    • Transaction:事務消息云消息隊列 RocketMQ 版支持分布式事務消息,支持應用數據庫更新和消息調用的事務一致性保障。

消息隊列
  • 定義:實際存儲當前消息的隊列。更多信息,請參見隊列(MessageQueue)
  • 取值:由服務端指定并填充。
消息位點
  • 定義:當前消息存儲在隊列中的位置。更多信息,請參見消費進度原理
  • 取值:由服務端指定并填充。取值范圍:0~long.Max。
消息ID
  • 定義:消息的唯一標識,集群內每條消息的ID全局唯一。
  • 取值:生產者客戶端系統自動生成。固定為數字和大寫字母組成的32位字符串。
索引Key列表(可選)
  • 定義:消息的索引鍵,可通過設置不同的Key區分消息和快速查找消息。
  • 取值:由生產者客戶端定義。
過濾標簽Tag(可選)
  • 定義:消息的過濾標簽。消費者可通過Tag對消息進行過濾,僅接收指定標簽的消息。
  • 取值:由生產者客戶端定義。
  • 約束:一條消息僅支持設置一個標簽。
定時時間(可選)
  • 定義:定時場景下,消息觸發延時投遞的毫秒級時間戳。更多信息,請參見定時/延時消息
  • 取值:由消息生產者定義。
  • 約束:
    • 包年包月、按量付費標準版,Serverless標準版與專業版最大支持7天。

    • 包年包月、按量付費專業版,鉑金版最大支持40天。

    詳細信息,請參見配額與限制

消息發送時間
  • 定義:消息發送時,生產者客戶端系統的本地毫秒級時間戳。
  • 取值:由生產者客戶端系統填充。
  • 說明:客戶端系統時鐘和服務端系統時鐘可能存在偏差,消息發送時間是以客戶端系統時鐘為準。
消息保存時間戳
  • 定義:消息在云消息隊列 RocketMQ 版服務端完成存儲時,服務端系統的本地毫秒級時間戳。

    對于定時消息和事務消息,消息保存時間指的是消息生效對消費方可見的服務端系統時間。

  • 取值:由服務端系統填充。
  • 說明:客戶端系統時鐘和服務端系統時鐘可能存在偏差,消息保留時間是以服務端系統時鐘為準。
消費重試次數
  • 定義:消息消費失敗后,云消息隊列 RocketMQ 版服務端重新投遞的次數。每次重試后,重試次數加1。更多信息,請參見消費重試
  • 取值:由服務端系統標記。首次消費,重試次數為0;消費失敗首次重試時,重試次數為1。

業務自定義屬性

自定義屬性對
  • 定義:生產者可以自定義設置的擴展信息。
  • 取值:由消息生產者自定義,按照字符串鍵值對設置。

消息負載

消息負載
  • 定義:業務消息的實際報文數據。
  • 取值:由生產者負責序列化編碼,按照二進制字節傳輸。
  • 約束:請參見參數限制

行為約束

消息大小不得超過其類型所對應的限制,否則消息會發送失敗。

系統默認的消息最大限制如下:
  • 普通和順序消息:4 MB
  • 事務和定時或延時消息:64 KB

使用建議

單條消息不建議傳輸超大負載

作為一款消息中間件產品,云消息隊列 RocketMQ 版一般傳輸的是都是業務事件數據。單個原子消息事件的數據大小需要嚴格控制,如果單條消息過大容易造成網絡傳輸層壓力,不利于異常重試和流量控制。

生產環境中如果需要傳輸超大負載,建議按照固定大小做報文拆分,或者結合文件存儲等方法進行傳輸。

消息中轉時做好不可變設計

云消息隊列 RocketMQ 版服務端5.x版本中,消息本身不可編輯,消費端獲取的消息都是只讀消息視圖。

但在歷史版本3.x和4.x版本中消息不可變性沒有強約束,因此如果您需要在使用過程中對消息進行中轉操作,務必將消息重新初始化。

  • 正確使用示例如下:
    Message m = Consumer.receive();
    Message m2= MessageBuilder.buildFrom(m);
    Producer.send(m2);
  • 錯誤使用示例如下:
    Message m = Consumer.receive();
    m.update();
    Producer.send(m);