Потребители Kafka обрабатывают синхронные сообщения в разных темах - PullRequest
1 голос
/ 08 мая 2020

У меня два производителя Kafka создают сообщения при создании и удалении клиентов. Каждый выдает сообщение в разных топах c. Существуют соответствующие потребители Kafka, которые отвечают за действия по созданию и удалению клиентов.

Проблема заключается в том, что сообщение удалить клиент C1 потребляется до создания C1. Клиент C1 будет создан и никогда не будет удален.

Как я могу гарантировать, что сообщение об удалении C1 будет использовано только после того, как будет использовано сообщение создания C1? Или другой подход, чтобы гарантировать, что действия create и delete синхронизируются, когда мы используем kafka?

1 Ответ

1 голос
/ 08 мая 2020

Упорядочивание данных в Kafka гарантируется только в разделе topi c. Если вы гарантируете, что все данные (создание и удаление) для клиента C1 попадают в один раздел (например, выбрав тип идентификатора клиента в качестве ключа сообщения Kafka), вы гарантируете, что созданные данные будут сохранены и, следовательно, потреблены до удаление.

Однако проблема, которую я вижу здесь, заключается в том, что у вас есть два разных производителя. Так что всегда есть шанс, что удаление будет записано в топи Kafka c перед созданием (из-за каких-либо проблем в «создателе»).

В идеале, у вас есть один единственный производитель покрывая как создание, так и удаление (если возможно). Я также предлагаю объединить двух потребителей в одну ConsumerGroup.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...