當云消息隊列 Kafka 版控制臺提供的按位點查詢和按時間查詢消息的功能無法滿足您搜索消息的需求時,您可以使用云消息隊列 Kafka 版消息檢索功能。消息檢索支持按Topic分區、位點范圍、時間范圍以及消息Key和Value關鍵字檢索。本文介紹如何開通消息檢索、添加檢索條件以及進行暫停、啟用、刪除管理操作。
前提條件
已為云消息隊列 Kafka 版實例創建數據源Topic。更多信息,請參見步驟一:創建Topic。
說明Serverless實例暫不支持消息檢索功能。
云消息隊列 Kafka 版實例所在地域已支持消息檢索功能。查看地域支持情況,請參見開服地域。
背景信息
云消息隊列 Kafka 版消息檢索借助云消息隊列 Kafka 版的Connector功能及表格存儲(Tablestore)實現,通過Connector對Topic中的消息進行轉儲,發送到表格存儲中的數據表中,由表格存儲引功能提供消息檢索的能力。
開通消息檢索相當于自動化創建了一個云消息隊列 Kafka 版同步數據至表格存儲的Connector任務,任務名稱格式為:ots-ms-{Topic名稱}-{6位隨機字符}。任務詳情查看操作,請參見查看消息檢索任務詳情。
首次開通消息檢索后,云消息隊列 Kafka 版自動為您開通同地域下的表格存儲服務,并創建表格存儲實例和對應的數據表。每個開通消息檢索的Topic會在表格存儲中對應創建一張數據表。自動創建的實例和數據表名稱格式如下:
實例名稱:kfk-{云消息隊列 Kafka 版實例名稱后12位字符}
數據表表名:{Topic名稱}:kafka_topic_{Topic名稱}_{6位隨機字符}
每個開通消息檢索的Topic會在云消息隊列 Kafka 版實例中自動創建4個Topic和2個Group,用于記錄任務配置和任務狀態。名稱格式如下:
任務位點Topic:connect-offset-{任務名稱}
任務配置Topic:connect-config-{任務名稱}
任務狀態Topic:connect-status-{任務名稱}
死信隊列Topic/異常數據Topic:connect-error-{任務名稱}
Connector消費組:connect-{任務名稱}
任務集群Group:connect-cluster-{任務名稱}
計費說明
云消息隊列 Kafka 版消息檢索處于公測階段,暫時不會在云消息隊列 Kafka 版側產生費用。
消息檢索公測階段,使用消息檢索時,自動在表格存儲創建的實例和數據表,暫時不收費。
阿里云不承諾消息檢索的SLA,使用消息檢索所依賴的其他產品的SLA和費用說明請以對應產品為準。
注意事項
單個云消息隊列 Kafka 版實例默認最多同時支持3個Topic的消息檢索。
表格存儲單一屬性列String類型的列值大小上限為2 MB,超過2 MB的消息不會被同步,也不會被檢索出來。
表格存儲中的數據保留時長與云消息隊列 Kafka 版實例消息保留時長具有相同的數據生命周期(TTL),當數據超過消息保留時長時,將會自動清除并移除相關索引。關于云消息隊列 Kafka 版消息保留時長相關配置和說明信息,請參見變更消息配置。
由于表格存儲數據過期策略與云消息隊列 Kafka 版并不完全一致,故最終檢索到的數據請以實際獲取的為準。
消息檢索操作步驟
步驟一:開通消息檢索
開通某個實例下Topic的消息檢索功能,以便于您根據需要對其Topic中消息進行檢索。
首次開通消息檢索時,僅會自動開通同地域下的表格存儲服務。
首次開通消息檢索時,云消息隊列 Kafka 版會為您自動創建服務關聯角色AliyunServiceRoleForAlikafkaConnector,以便使用Connector功能。如果已創建服務關聯角色,云消息隊列 Kafka 版不會重復創建。關于服務關聯角色的更多信息,請參見服務關聯角色。
在概覽頁面的資源分布區域,選擇地域。
在左側導航欄,單擊實例列表。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,單擊消息檢索,然后單擊開通消息檢索。
在開通消息檢索面板,填寫開通參數,然后單擊確定。
說明如果您是首次在當前實例下開通消息檢索功能,單擊開通消息檢索后,需在您尚未開通當前實例的 Connector 功能提示對話框,單擊確認,然后再在開通消息檢索面板填寫參數。
參數
描述
示例值
數據源 Topic
需要開通消息檢索的Topic。
test
消費初始位置
開始消費的位置。默認取值為最近位點。取值說明如下:
最早位點:從最初位點開始消費。
最近位點:從最新位點開始消費。
最近位點
記錄時間
記錄消息的時間,即檢索消息時的時間范圍。默認取值為即時時間。取值說明如下:
原生時間:云消息隊列 Kafka 版中記錄的消息創建時間,即發送消息時,客戶端自帶的或是您指定的
ProducerRecord
中的消息創建時間。即時時間:數據同步至表格存儲的時間。
該值僅表示消息被同步至表格存儲的時間,并不是消息的生產時間,因此搜索結果中的消息時間與消息的生產時間可能會不一致。
原生時間
在消息檢索頁面您可以查看到剛開通搜索功能的Topic。
步驟二:發送測試消息
開通消息檢索后,您可以向云消息隊列 Kafka 版的數據源Topic發送消息,測試消息檢索是否創建成功。
在消息檢索頁面,找到需要測試的目標Topic,在其操作列,單擊詳情。
在任務詳情頁面,單擊測試。
在發送消息面板,填寫消息參數,然后單擊確定。
在消息 Key文本框中輸入消息的Key值,例如demo。
在消息內容文本框輸入測試的消息內容,例如 {"key": "test"}。
設置發送到指定分區,選擇是否指定分區。
單擊是,在分區 ID文本框中輸入分區的ID,例如0。如果您需查詢分區的ID,請參見查看分區狀態。
單擊否,不指定分區。
步驟三:搜索消息
在消息檢索頁面,找到目標Topic,在其操作列,單擊搜索。
在搜索面板,設置搜索條件,在搜索項下拉列表中選擇需要添加的搜索項,單擊添加搜索項,添加搜索項并在值列設置搜索信息,然后單擊確定。
說明搜索條件可以根據分區、位點范圍、時間范圍、Key和Value自由組合,設置多個搜索條件時,將采用交集進行搜索。
建議發送消息的時候使用業務的唯一標識作為Key值,以便在搜索時能夠實現精準匹配。
搜索項
說明
分區
本次搜索Topic消息內容所在的分區。
位點范圍
本次搜索Topic消息內容的位點范圍。
時間范圍
搜索Topic消息的時間范圍。您可以設置近三天內的某個時間范圍和自定義時間。 此處設置的搜索時間最小粒度為分鐘。
Key
本次搜索Topic消息內容的消息Key或消息內容,即要匹配的Key或Value。
檢索關鍵詞說明如下:
搜索方式為短語匹配搜索。例如,消息Key是“云消息隊列 Kafka 版是阿里云提供的分布式、高吞吐、可擴展的消息隊列服務。”,可以設置搜索關鍵詞為“分布式”,或者“阿里云”和“分布式”組合。
如果搜索關鍵字中包含星號(*)或問號(?),則采用通配符檢索。星號(*)代表任意字符序列,問號(?)代表任意單個字符。英文字母不區分大小寫。例如,消息內容是“AliKafkaTest001qaz”,可以設置關鍵詞為“AliKafkaTe*”。
不建議使用通配符作為起始關鍵字,檢索效率較低,且帶有通配符的字符串長度不能超過20個字符。
Value
在Topic搜索頁面,展示檢索的消息如下:
說明消息檢索結果最多顯示10條,建議在設定搜索條件時盡可能具體,以便在搜索過程中實現精準匹配
查詢到的每條消息在控制臺上最多顯示1 KB的內容,超過1 KB的部分將自動截斷。如需查看完整的消息內容,請下載相應的消息。
參數
描述
分區
消息的Topic分區。
位點
消息的所在的位點。
Key
消息的鍵(已強制轉換為String類型)。
Value
消息的值(已強制轉換為String類型),即消息的具體內容。
消息創建時間
消息創建時間或消息同步至表格存儲的時間。
消息創建時間指發送消息時,客戶端自帶的或是您指定的
ProducerRecord
中的消息創建時間。說明如果配置了該字段,則按配置值顯示。
如果未配置該字段,則默認取消息發送時的系統時間。
如果顯示值為1970/x/x x:x:x,則說明發送時間配置為0或其他錯誤的值。
操作
單擊下載 Key:下載消息的鍵值。
單擊下載 Value:下載消息的具體內容。
其他操作
查看消息檢索任務詳情
開通消息檢索后,即可查看自動創建的Topic、Group、表格存儲實例名稱、表格存儲數據表表名等詳細信息,您也可以在詳情中直接進入表格存儲數據表。
在消息檢索頁面,找到目標Topic,在其操作列,單擊詳情。
查看消費詳情
您可以查看訂閱當前Topic的在線Group在Topic各個分區的消費進度,了解消息同步到表格存儲時的消費和堆積情況。
在消息檢索頁面,找到需要查看消費進度的目標Topic,在其操作列,單擊消費進度。
在消費詳情頁面,您可以查看Topic各分區的消費情況。
暫停消息檢索任務
在消息檢索頁面,找到目標Topic,在其操作列,選擇 。
在彈出的對話框單擊確認。
啟用消息檢索任務
您可以根據需要重新啟用某個已經暫停的消息檢索任務。
在消息檢索頁面,找到目標Topic,在其操作列,選擇 。
在彈出的對話框單擊確認。
刪除消息檢索任務
刪除Topic的消息檢索任務后,表格存儲的數據表與多元索引會同步刪除,該Topic不再提供消息檢索功能。如果需要繼續使用該Topic消息檢索,請重新創建并等待數據同步。
在消息檢索頁面,找到需要刪除的目標Topic,根據任務狀態在對應位置操作。
如果任務處于運行中和已暫停狀態以外的其他狀態,則在其操作列,單擊刪除。
如果任務處于運行中和已暫停狀態,則在其操作列,選擇
。
在彈出的對話框單擊確認。
在消息檢索頁面,您已看不到剛才已刪除的Topic。