在分布式應用系統中,多個服務間的互動涉及複雜的網路通訊和資料轉送,往往一次請求需要多個內部服務間的相互調用才能完成,任何一個環節出現問題都可能導致外部服務任務執行失敗或延時,且很難快速定位問題根源。鏈路追蹤功能可在多個服務進行互動時記錄請求在系統的傳輸過程,並提供詳細的日誌和效能資料,雲訊息佇列 RocketMQ 版支援將符合OpenTelemetry標準的TraceData Integration至阿里雲的鏈路追蹤服務中,協助您快速診斷異常問題。
Trace定義
雲訊息佇列 RocketMQ 版的Trace資料符合OpenTelemetry標準下,訊息領域的span語義約定。詳細資料,請參見opentelemetry-specification。
Messaging span定義
Messaging span定義了各span之間的拓撲關係,包括訊息發送、接收和處理的不同span之間的父子關係及連結關係。更多資訊,請參見Semantic Conventions of Messaging。
雲訊息佇列 RocketMQ 版涉及的span如下:
span | 說明 |
send | 訊息的發送過程。span以一次發送行為開始,以發送成功、失敗或拋異常結束。 訊息發送的內部重試會被記錄成多條span。 |
receive | 消費者接收訊息的長輪詢過程,與長輪詢的生命週期保持一致。 receive span預設不啟用,若要啟用,則需要在運行時增加 |
process | PushConsumer中 |
以上幾個span的關係如下:

receive span未啟用時:process span為send span的子級。
receive span啟用時:process span為receive span的子級,同時會連結到send span。
Messaging attributes定義
訊息領域的span語義約定中規定了隨span攜帶的通用屬性,包括:
messaging.message.id:訊息ID,訊息的唯一識別碼。
messaging.destination:訊息發送的目的地,通常是指某個隊列或主題。
messaging.operation:對訊息的操作類型,例如,發送、接收、確認等。
更多屬性,請參見Messaging attributes。
對於不同的訊息產品,會有自己特定的行為和屬性。雲訊息佇列 RocketMQ 版特定的屬性如下:
屬性 | 取實值型別 | 說明 |
messaging.rocketmq.client_group | string | 消費者的負載平衡組。 |
messaging.rocketmq.client_id | string | 用戶端的唯一識別碼。 |
messaging.rocketmq.message.delivery_timestamp | int | 定時訊息的定時時間。 |
messaging.rocketmq.message.group | string | 順序訊息的Group分組。 |
messaging.rocketmq.message.type | string | 訊息類型。取值如下: |
messaging.rocketmq.message.tag | string | 訊息的過濾標籤。消費者可通過Tag對訊息進行過濾,僅接收指定標籤的訊息。 |
messaging.rocketmq.message.keys | string[] | 訊息的索引鍵,可通過設定不同的Key區分訊息和快速尋找訊息。 |
使用限制
目前僅Java SDK用戶端支援上報Trace資料至鏈路追蹤服務。SDK版本資訊,請參見Java SDK版本說明。
事務訊息僅支援追蹤訊息生產相關的Trace資料,暫不支援追蹤訊息提交或訊息復原的Trace資料。
僅支援追蹤PushConsumer消費者相關的Trace資料,暫不支援SimpleConsumer相關的Trace資料。更多資訊,請參見消費者分類。
RocketMQ TraceData Integration方案
雲訊息佇列 RocketMQ 版需要將符合OpenTelemetry標準的Trace資料上報至鏈路追蹤的服務端,由鏈路追蹤的服務端完成Trace資料的彙總計算及可視化展示。
鏈路追蹤服務端您可以選擇自行搭建,也可以選擇阿里雲提供的鏈路追蹤服務,雲訊息佇列 RocketMQ 版支援將TraceData Integration至阿里雲Log Service鏈路追蹤和ARMS鏈路追蹤服務中。
SLS Trace全鏈路解決方案
整合操作:請參見SLS OpenTelemetry Trace接入。
Demo樣本:
RocketMQ Trace指標大盤Demo:展示利用Trace資料轉化得到的訊息發送延時、發送成功率、消費成功率、端到端時延等指標。

RocketMQ Trace分析Demo:可以根據Trace指標大盤得到的Message ID或Trace ID,對異常調用進行進一步分析。

ARMS Trace全鏈路解決方案
具體操作,請參見ARMS OpenTelemetry Trace接入。