[英]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 方法 - 本質上是一個回調 - 帶有一個參數,即新分配的分區的集合。 這使您的代碼能夠在獲取任何記錄之前發現當前分配。
希望這會有所幫助 - 我已經寫了一篇關於作業這方面的博客文章,但尚未發布 - 我會在添加鏈接時添加一個鏈接,如果這聽起來像是您面臨的問題。
我采用了一些不同的方法。
另外我選擇在不同的線程上啟動每個分區消耗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.