[英]spring-cloud-stream kafka offline consumer messages lost
我一直在玩spring-cloud-stream(1.0.0.BUILD-SNAPSHOT和kafka binder),並注意到消費者離線時,發送的任何消息都會丟失。 當我啟動消費者時,它不會處理發送給kafka的積壓請求。 這是故意的嗎?
我們肯定需要改進我們的文檔,但這里有一些指示。
如果您希望使用者處理停止時生成的消息,則需要指定使用者組名稱,例如spring.cloud.stream.bindings.<bindingName>.group=foo
。 當指定了一個使用者組時,如果具有相同使用者組的客戶端已經運行(即我們記錄了該使用者消耗的偏移量)或者b) spring.cloud.stream.binder.kafka.start-offset
指定的值,則應用程序啟動a)最新的未使用消息spring.cloud.stream.binder.kafka.start-offset
(可以是earliest
或latest
,代表主題的開頭或結尾)。 因此,重新啟動保留消費者群體的消費者將從他們離開的地方消費,新消費者將根據啟動選項啟動。 如果未指定組,則消費者將被視為“匿名”,並且僅對其啟動后生成的消息感興趣,因此它將始終在分區集的末尾開始。
如果您想繞過已保存的值,則可以使用spring.cloud.stream.binder.kafka.reset-offets=true
,這將導致客戶端重置已保存的偏移並從spring.cloud.stream.binder.kafka.start-offset
指示的值開始spring.cloud.stream.binder.kafka.start-offset
。
這反映了0.8.2預期的行為(並得到支持)。 一旦我們升級到0.9,我們將相應地更新。
是; 默認設置是從主題末尾開始監聽。
使用
spring:
cloud:
stream:
binder:
kafka:
start-offset: earliest
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.