Apache kafka Kafka-Mirromaker2生产者幂等性与复型
我已在两个集群(CL1、CL2)上设置了mirrormaker2,镜像似乎工作正常,但以下场景中的测试主题中存在重复问题: 当两个集群都启动并运行时,我模拟一个事件,逐个停止CL2集群的代理。停止前两个代理不会产生任何问题。我的测试主题的所有消息都在CL2集群的CL1.topic上镜像,没有问题。在停止最后一个代理之后,显然会停止CL2端的消息,因为所有代理都已关闭。在测试CL1主题期间,始终有一个活动的生产者提供消息 问题从重新启动代理开始。在启动第一个代理之后,我注意到一些消息(大约5%)是重复的。我已经在CL1.topic上连接了一个客户端,我可以确认镜像主题中确实存在重复的消息。请建议我如何避免这些重复。幂等性在代理关闭期间可能无法正常工作 在以下内容中,您可以找到我的MM2相对配置Apache kafka Kafka-Mirromaker2生产者幂等性与复型,apache-kafka,idempotent,apache-kafka-mirrormaker,Apache Kafka,Idempotent,Apache Kafka Mirrormaker,我已在两个集群(CL1、CL2)上设置了mirrormaker2,镜像似乎工作正常,但以下场景中的测试主题中存在重复问题: 当两个集群都启动并运行时,我模拟一个事件,逐个停止CL2集群的代理。停止前两个代理不会产生任何问题。我的测试主题的所有消息都在CL2集群的CL1.topic上镜像,没有问题。在停止最后一个代理之后,显然会停止CL2端的消息,因为所有代理都已关闭。在测试CL1主题期间,始终有一个活动的生产者提供消息 问题从重新启动代理开始。在启动第一个代理之后,我注意到一些消息(大约5%)是
clusters = CL1, CL2
CL1.bootstrap.servers = broker1CL1:9092, broker2CL1:9092, broker3CL1:9092
CL2.bootstrap.servers = broker1CL2:9092, broker2CL2:9092, broker3CL2:9092
PRIM->DSTR.enabled = true
DSTR->PRIM.enabled = true
CL1.producer.enable.idempotence = true
CL1.producer.acks=all
CL1.producer.max.in.flight.requests.per.connection=5
CL1.producer.retries=2147483647
CL1.consumer.isolation.level=read_committed
CL2.producer.enable.idempotence = true
CL2.producer.acks=all
CL2.producer.max.in.flight.requests.per.connection=5
CL2.producer.retries=2147483647
CL2.consumer.isolation.level=read_committed
这一问题已在官方网站上得到答复 答案如下:卡夫卡交付担保可分为三类,包括“最多一次”、“至少一次”和“恰好一次”。默认情况下,当前的MM 2.0保证“至少”一次交付保证,这意味着在某些故障场景下会有重复的消息。对于不了解的更多信息,我建议阅读本文