Spring cloud stream spring cloud stream卡夫卡离线消费者信息丢失

Spring cloud stream spring cloud stream卡夫卡离线消费者信息丢失,spring-cloud-stream,Spring Cloud Stream,我一直在玩SpringCloudStream(1.0.0.BUILD-SNAPSHOT with kafka binder),注意到消费者离线时,发送的任何消息都会丢失。当我启动消费者时,它不会处理发送给卡夫卡的积压请求。这是故意的吗 是;默认设置是从主题末尾开始收听 使用 我们当然需要改进我们的文档,但同时这里有一些提示 如果希望使用者处理停止时生成的消息,则需要指定使用者组名称,例如spring.cloud.stream.bindings..group=foo。当指定消费者组时,应用程序的起

我一直在玩SpringCloudStream(1.0.0.BUILD-SNAPSHOT with kafka binder),注意到消费者离线时,发送的任何消息都会丢失。当我启动消费者时,它不会处理发送给卡夫卡的积压请求。这是故意的吗

是;默认设置是从主题末尾开始收听

使用


我们当然需要改进我们的文档,但同时这里有一些提示

如果希望使用者处理停止时生成的消息,则需要指定使用者组名称,例如
spring.cloud.stream.bindings..group=foo
。当指定消费者组时,应用程序的起始位置为a)如果具有相同消费者组的客户端已经运行(即,我们记录了该消费者的消费偏移量),则为最新未消费消息,或b)由
spring.cloud.stream.binder.kafka.start offset
(可以是
最早的
最晚的
,表示主题的开始或结束)。因此,重新启动保留使用者组的使用者将从其离开的位置开始使用,新使用者将根据开始选项开始。如果未指定组,则使用者将被视为“匿名”,并且只对启动后生成的消息感兴趣,因此,它将始终在p结束时开始分割集

如果要绕过已保存的值,则可以使用
spring.cloud.stream.binder.kafka.reset offets=true
,这将导致客户端重置保存的偏移量,并从
spring.cloud.stream.binder.kafka.start offset
指示的值开始


这反映了预期(和支持)的行为0.8.2.一旦升级到0.9,我们将相应地更新内容。

该设置会使消费者在重新启动后再次处理旧消息吗?YMMV,取决于卡夫卡版本;我使用0.9.0.1进行了测试,
最早的
从第一条未使用的消息开始。我停止了应用程序;发布了几条消息,然后重新启动了应用程序,我只使用了g然后我运行了一个控制台消费者(从一开始就使用
--
),并获得了所有的消费者(包括以前运行的应用程序)。binder当前使用的是0.8.x.x客户端,它与0.9.x.x一起工作;我们正在将
spring integration kafka
升级到0.9.x.x(及其纯java客户端)并且很快将重新制作卡夫卡活页夹以使用它。它将提供更多的灵活性。感谢@marius bogoevici-我现在看到与昨天不同的结果-一定是试点错误-我的消费者可靠地从第一条未使用的消息开始。并且
开始偏移=最早
以及
重置偏移
gi请告诉我代理中保留的所有消息。您好,@marius bogoevici您的回答中有一个输入错误:reset offes->reset offest。
spring:
  cloud:
    stream:
      binder:
        kafka:
          start-offset: earliest