簡體   English   中英

提取kafka主題中所有消息的所有schemaID,無需消費所有消息

[英]Extract all schemaIDs of all messages in a kafka topic without the need to consume all messages

我想知道是否有辦法(kafka API/工具)從 kafka 和/或模式注冊表中返回主題下消息使用的 schemaId 列表。

我有一個快速解決方案來消耗所有消息以從 kafka 外部提取。 但是,這有點耗費時間和資源。

第一個解決方案:

首先,您可以通過以下方式請求所有模式:

/schemas

響應是一個 object 數組,每個數組都包含一個主題字段,通常代表您的主題名稱。

{
  "schema":{"type": "string"},
  "subject": "your target topic"},
  "version": "version number",
  "schema": {}, // schema that you are looking for 
  "id": "id"
}

第二種解決方案:

/subjects/${your topic name }/versions/

響應是一個版本 ID 數組,例如:

[1,2,3,..]

而且您必須為每個版本獲取所需的架構:

/subjects/${your topic name }/versions/version // 1,2,3 etc

此處檢查架構注冊表 rest api 文檔

有沒有辦法(kafka API/工具)從kafka中返回主題下消息使用的schemaIds列表

是的。

kafka-avro-console-consumer ... --property print.schema.ids=true

https://github.com/confluentinc/schema-registry/pull/901

無需消費

不; 您至少需要反序列化每條記錄的前 5 個字節。


另一個答案顯示了注冊表中的內容,這不是主題中當前存在的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM