簡體   English   中英

所有分區中的 Kafka 軌道偏移量

[英]Kafka track offsets in all partitions

將嘗試解釋我想要實現的目標。

我只知道主題名稱,因此我必須縮小到分區。 首先我嘗試

consumer.Subscribe(topics) 

consumer.Assignement

但是如果調用之間沒有延遲,它會返回空列表。

我可以使用consumer.Assign(..)但我還不知道確切的分區、偏移量。

接下來,當我能夠進入分區時,我需要按時間范圍獲得低/高偏移。

例如,主題“測試”有 5 個分區,我需要提取從 10:00 到 10:05 插入的消息的所有消息信息(分區、偏移量)。

如果需要任何其他信息,請告訴我。

謝謝

我不是 100% 清楚你的目標是什么,但一些關於分配的信息可能會有所幫助。

assignment() 方法在第一次在消費者加入組時或重新平衡之后調用 poll 方法之前返回一個空列表 - 這是因為當分區被自動分配時,消費者只會發現分配是其中之一在獲取實際記錄之前,輪詢方法的步驟。

您可以通過在調用 assignment() 之前至少調用一次 poll 來找出實際分配的分區 - 我認為這就是您所發現的 - 或者通過在調用 subscribe() 時傳遞 ConsumerRebalanceListener 來找到。 在輪詢期間調用 onPartitionsAssigned 方法 - 本質上是一個回調 - 帶有一個參數,即新分配的分區的集合。 這使您的代碼能夠在獲取任何記錄之前發現當前分配。

希望這會有所幫助 - 我已經寫了一篇關於作業這方面的博客文章,但尚未發布 - 我會在添加鏈接時添加一個鏈接,如果這聽起來像是您面臨的問題。

我采用了一些不同的方法。

  1. 從 IAdminClient 加載元數據以獲取它的所有可用分區。
  2. 使用我需要從中消費的開始時間戳創建 TopicPartitionTimestamp。
  3. 分配給 TopicPartitionTimestamp 並從中消費。

另外我選擇在不同的線程上啟動每個分區消耗。

暫無
暫無

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

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