繁体   English   中英

在Kafka Consumer中获取重复项

[英]Getting duplicates in kafka consumer

我正在为Kafka消费者编写Java客户端。我在处理它之前异步提交每个消息。仍然在重新平衡期间收到许多重复的消息。

谁能解释原因以及如何避免这种情况?

即使您同步提交所有消息,Kafka Consumer也不提供一次精确的处理保证。

问题是,当您确实成功完成了对消息的处理并想要提交时,重新平衡可能会在提交之前发生。 因此,您的提交未完成,并且已经处理的消息将被重新处理。

因为您使用异步提交,所以重复的数量增加,因为不会立即对每条消息进行提交。 因此,您可以有许多“正在进行中”的消息正在处理中,但尚未提交。 重新平衡时,所有“飞行中”的消息将被重新处理。

因此, 同步提交将减少重复项的数量。 但是,不能完全避免重复,因为Kafka中没有确切的一次交货保证。

不过,Kafka的未来发布路线图上仅是一次交付: https : //cwiki.apache.org/confluence/display/KAFKA/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM