Я установил mirrormaker2 на 2 кластера (CL1, CL2), и зеркальное отображение, похоже, работает правильно, за исключением проблемы с дубликатами в тестовой теме в следующем сценарии:
Пока оба кластера запущены и работают, я имитирую инцидент, останавливая одного за другим брокеров кластера CL2. Остановка первых двух брокеров не вызывает никаких проблем. Все сообщения моей тестовой темы без проблем зеркалируются на CL1.topic кластера CL2. После остановки последнего брокера, очевидно, остановит сообщения на стороне CL2, поскольку все брокеры отключены. Всегда есть активный производитель, который рассылает сообщения во время теста по теме CL1.
Проблема начинается при перезапуске брокеров. После запуска первого брокера отмечу, что некоторые сообщения (около 5%) дублируются. Я подключил клиента к CL1.topic и могу подтвердить, что в моей зеркальной теме действительно есть повторяющиеся сообщения. Пожалуйста, подскажите, как я могу избежать этих дубликатов. Идемпотенция может некорректно работать при завершении работы брокера?
Ниже вы можете найти мою относительную конфигурацию MM2
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