手动提交模式下,停止服务造成offset重复消费问题

来源:7-7 Consumer多线程并发处理

水桶一号

2021-12-15

老师您好,如果consumer指定partition消费,假如一次拉取了1000条数据,循环消费到低500条的时候服务停止了,此时还有提交当前partition的offset,那么下次服务启动时应该会造成前500条数据的重复消费吧?

如果每消费一条就提交当前partition的offset那是不是太浪费IO了?

您在实际生产环境中能有什么好的解决方案呢?

还有一个问题就是,实际生产环境中尤其是分布式环境下,需要为consumer单独部署一个服务吗?

写回答

1回答

Allen

2021-12-18

不是没有好的办法, 大多数都是因为没必要, 比如你处理一跳, 就在数据库或者redis记录一下offset, 但是你这样干就是浪费kafka的高吞吐量的特性, 如果对消息的每一条都要求非常严, 为什么不考虑用MQ呢

1
0

Kafka多维度系统精讲,从入门到实战开发

系统讲解Kafka,实战结合,让你成为使用Kafka的高手

896 学习 · 237 问题

查看课程