当前位置:  开发笔记 > 运维 > 正文

如果发生故障,Spring Kafka自动提交偏移

如何解决《如果发生故障,SpringKafka自动提交偏移》经验,为你挑选了1个好方法。

我正在使用Spring Kafka 1.2.2.RELEASE。我有一个Kafka侦听器作为使用者,它可以侦听主题并以弹性方式索引文档。我的自动提交偏移量属性设置为true //默认值。

我的印象是,如果侦听器中存在异常(弹性下降),则不应提交偏移量,并且应该为下一次轮询处理相同的消息

但是这没有发生,消费者在下一次轮询时提交偏移量。阅读文章和文档后,我了解到这种情况是将auto commit设置为true到下一次轮询将提交所有偏移量

我的疑问是,消费者为什么要调用下一个民意调查,以及如何通过auto commit为true来防止任何偏移量提交,还是需要将此属性设置为false并手动提交。



1> Gary Russell..:

我更喜欢将其设置为false;容器为您管理偏移量更为可靠。

将容器的设置AckModeRECORD(默认为BATCH),然后在侦听器返回后,容器将为您提交偏移量。

还考虑升级到至少1.3.3(当前版本为2.1.4);由于使用KIP- 62,1.3.x引入了更为简单的线程模型

编辑

使用自动提交,无论成功/失败,都将提交偏移量。除非失败,否则容器将在失败后不提交ackOnError(另一个原因,不使用自动提交)。

但是,这仍然无济于事,因为经纪人不会再次发送相同的记录。Consumer为此,您必须执行搜索操作。

在2.0.1(当前版本为2.1.4)中,我们添加了SeekToCurrentErrorHandler,这将导致失败和未处理的记录在下一次轮询时重新发送。请参阅参考手册。

您还可以使用ConsumerAwareListener自己执行搜索(也在2.0中添加)。

对于较旧的版本(> = 1.1),您必须使用ConsumerSeekAware监听器,它要复杂得多。

另一种选择是添加重试,以便根据重试设置重新尝试传递。

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有