繁体   English   中英

spring-cloud-stream kafka离线消费者消息丢失

[英]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 (可以是earliestlatest ,代表主题的开头或结尾)。 因此,重新启动保留消费者群体的消费者将从他们离开的地方消费,新消费者将根据启动选项启动。 如果未指定组,则消费者将被视为“匿名”,并且仅对其启动后生成的消息感兴趣,因此它将始终在分区集的末尾开始。

如果您想绕过已保存的值,则可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM