Apache kafka Spring Cloud Stream Kafka Binder自动提交错误=false获取意外行为

Apache kafka Spring Cloud Stream Kafka Binder自动提交错误=false获取意外行为,apache-kafka,stream,spring-cloud-stream,Apache Kafka,Stream,Spring Cloud Stream,我使用的是Spring Boot 2.1.1.RELEASE和Spring Cloud Greenwich.RC2,Spring Cloud stream binder kafka的托管版本是2.1.0RC4。卡夫卡版本是1.1.0。我设置了以下属性,因为如果出现错误,则不应使用这些消息 spring.cloud.stream.bindings.input.group=consumer-gp-1 ... spring.cloud.stream.kafka.bindings.input.consu

我使用的是Spring Boot 2.1.1.RELEASE和Spring Cloud Greenwich.RC2,Spring Cloud stream binder kafka的托管版本是2.1.0RC4。卡夫卡版本是1.1.0。我设置了以下属性,因为如果出现错误,则不应使用这些消息

spring.cloud.stream.bindings.input.group=consumer-gp-1
...
spring.cloud.stream.kafka.bindings.input.consumer.autoCommitOnError=false
spring.cloud.stream.kafka.bindings.input.consumer.enableDlq=false
spring.cloud.stream.bindings.input.consumer.max-attempts=3
spring.cloud.stream.bindings.input.consumer.back-off-initial-interval=1000  
spring.cloud.stream.bindings.input.consumer.back-off-max-interval=3000 
spring.cloud.stream.bindings.input.consumer.back-off-multiplier=2.0  
.... 
Kafka主题中有20个分区,Kerberos用于身份验证(不确定这是否相关)

Kafka使用者正在为其处理的每一条消息调用一个web服务,如果web服务不可用,则我预计使用者将尝试处理该消息3次,然后再转到下一条消息。因此,在我的测试中,我禁用了webservice,因此无法正确处理任何消息。从日志中我可以看出这正在发生

过了一会儿,我停止并重新启动了Kafka消费者(webservice仍然处于禁用状态)。我希望在Kafka消费者重新启动后,它会尝试处理第一次未成功处理的消息。从Kafka消费者重启后的日志(我打印了每条消息及其字段)中,我看不到这种情况发生。我认为分区可能会影响某些东西,但我检查了日志,所有20个分区都分配给了这个消费者

有我错过的房产吗?我认为当我第二次重新启动消费者时,预期的行为是Kafka broker会将未成功处理的记录再次传递给消费者


谢谢

参数按预期工作。请参阅注释。

>然后在重试多条记录3次后,将再次重试记录3,但不会重试记录1或2。
该部分没有意义;正在运行的应用程序不应返回“记录3”。也许编辑问题以添加一些日志来显示您看到的行为。嗨,Gary,我已经编辑了问题。谢谢,我想结束这个问题,因为参数正在按预期工作。我在查看日志时犯了一个错误,因为有许多消息正在被使用。我将测试更改为只有2个分区,并限制发布到主题的消息数量,以便跟踪和说明所有消息。我道歉。