我对使用kafka事务的consumer-producer应用程序进行了压力测试,以实现一次交付。同时启动了两个示例,每个示例都有两个同时运行的使用者。模拟了一些网络丢包(使用docker网络断开网桥)来精确测试一次交付。作为测试的结果,在出站主题中有很多重复项。
事情是这样的:
示例1连接到Kafka并开始使用消息。分区x中没有记录的轮询。然而,示例2正在处理它。在 __consumer_offsets
主题我可以看到,这个分区的提交是执行的(我使用producer提交偏移量,就像您使用tx producer一样)。
在10:35:36,最后一条记录与分区x的偏移量。
然而,由于某种原因,在10:36:31,另一个示例从分区x接收了第一批记录,结果,分区被处理了两次。
这种行为的原因可能是什么?我没有使用Spring或任何其他Kafka适配器。
暂无答案!
目前还没有任何答案,快来回答吧!