Spring Boot Kafka - Управление сообщениями с потребителем отличается - PullRequest
0 голосов
/ 30 сентября 2019

Мое приложение создано с помощью SpringBoot и находится в кластере (два разных istance openshit) У каждого istance есть один потребитель, который читает сообщение темы в фабрике репликации.

Я хотел бы найти механизм, блокирующий чтениесообщение в тему в фабрике репликации, если оно уже прочитано одним из двух потребителей

Пример:

ПОТРЕБИТЕЛЬСКИЙ КЛИЕНТ A - ЧИТАТЬ MSG_1 -> BROKER_1 - Увеличение смещения - Подтвердить, ОК

КЛИЕНТ ПОТРЕБИТЕЛЯ B -> НЕ ЧИТАТЬ MSG_1 -> BROKER_1 - исправить, потому что уже зафиксировать

Теперь BROKER_1 отображается, а новый вывод - BROKER_2

Как заблокироватьуже прочитанное сообщение в BROKER_2?

Спасибо всем!

Джузеппе.

1 Ответ

1 голос
/ 30 сентября 2019

Коэффициент репликации не контролирует, читают ли пользователи сообщения. Количество разделов делает. Если тема имеет только один раздел, то только один экземпляр-потребитель может читать сообщения, а все остальные экземпляры «блокируются». И если сообщение уже прочитано и передано, то не имеет значения, какой брокер является лидером, поскольку смещения поддерживаются для каждой темы, а не для реплики

Если у вас более одного раздела и вы все еще хотите заблокироватьесли пользователи не смогут читать данные, вам потребуется реализовать внешнюю скоординированную блокировку через Zookeeper, например

...