縱觀最新版本(v0.10)卡夫卡消費者documentation:我可以檢索卡夫卡分區的最新可用偏移量,而無需檢索所有消息嗎?
「消費者的位置給將要給出了下一記錄的偏移量,它會比最高的偏移較大的一個消費者已經看到該分區,每當消費者接收數據呼叫輪詢(長)並且接收消息時,它就自動地前進。「
有沒有辦法查詢服務器端分區可用的最大偏移量,沒有檢索所有消息?
我試圖實現的邏輯如下:
- 查詢的每個第二未決的消息量(A)一個題目中的
- 如果A>閾值時,喚醒一個處理器,將繼續檢索的所有郵件,並處理它們
- 否則什麼也不做(睡眠1)
的動機是,我需要做一些批量處理,但我想喚醒處理器ü只有當有足夠的數據時(並且我不想檢索所有數據兩次)。
謝謝。我想知道是否可以避免兩次讀取所有數據(在上面描述的場景中)。例如,我可以將max.partition.fetch.bytes減少到非常小的值,以消除* poll(0)*的「副作用」*檢索實際數據? –
你不需要調用poll()。 seekToEnd()是一個異步調用,您可以使用poll()或position()強制完成。使用seek ...()和position()不會讀取任何消息,只是少量的元數據 –
@ChrisGerken如果您正在使用消費者組但尚未分配任務,仔細研究代碼,但看起來它會拋出'IllegalArgumentException')。對於手動分配的主題/主題分區,似乎可以正常工作。 –