手动提交模式下,停止服务造成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呢
10
相似问题