[英]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.