簡體   English   中英

當我使用 akka 流在現有消費者組中創建新消費者時,如何尋求結束 kafka 主題?

[英]How do I seek to end of a kafka topic when I am creating a new consumer in an existing consumer group with akka streams?

我有一個 akka 應用程序(在 JAVA 中),它使用commitablePartitionedSource來使用來自 kafka 主題的消息。 我有幾個消費者群體可以為多個主題提供消費者。 這是由動態配置驅動的,我可以在其中暫時關閉消費者,並可能在稍后重新啟動它們。

當這個消費者重新啟動時,我只想閱讀新消息,而不是從我離開的地方開始。

有沒有辦法從 akka-alpakka 消費者那里獲取 kafkaConsumer 對象,以便我可以在處理之前seekToEnd()? 請讓我知道是否有其他方法可以實現這一目標? 也許使用 akka 配置或不同類型的消費者? 我不想保持自己的偏移量(希望不是唯一的選擇)

我的配置設置為在我啟動消費者組時獲取latest偏移量,但由於我正在關閉並重新啟動單個消費者,它總是從我停止的地方開始消費。

我嘗試為一個主題創建一個消費者組,但我有很多主題,而且結果非常耗費資源。 我還尋找一種方法來清除存儲在 kafka 中該主題的偏移量,但未成功。

最簡單的方法就是在每次啟動您的消費者時創建一個新的消費者組 Kafka 將在可配置的時間量 ( retention.ms ) 后負責刪除陳舊的消費者組

如果您很少重新啟動消費者並且總是希望它處理新數據而不是趕上所有錯過的消息,則此策略很好。

編輯

據我知道有沒有訪問底層KafkaConsumer的唯一方法是使用committableExternalSource 這樣您就可以訪問seekToEnd方法,但是您還需要注意訂閱提供每個分區的起始偏移量的主題(類似於您現在設置committablePartitionedSource但在Akka之外的方式)。

commitablePartitionedSourceAutoSubscription作為輸入,您不能指定偏移量。

您需要的是采用ManualSubscription或更高級別Subscription ,例如

> plainExternalSource
> committableExternalSource
> plainSource
...

暫無
暫無

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

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