Sobes.tech
Назад к вопросам
Junior — Middle
60

Можно ли обеспечить последовательный вывод сообщений из Kafka так, чтобы они шли в том же порядке, в каком были записаны в Topic?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

В Kafka гарантируется порядок сообщений только внутри одного партиции (partition) топика. Если вы хотите обеспечить последовательный вывод сообщений в том же порядке, в каком они были записаны, нужно:

  • Использовать один партицию для всех сообщений, чтобы порядок был сохранён.
  • Потреблять сообщения из этой партиции последовательно одним консьюмером.

Если топик имеет несколько партиций, то порядок сообщений между ними не гарантируется, так как каждая партиция обрабатывается независимо.

Пример настройки продюсера для отправки в одну партицию:

ProducerRecord<String, String> record = new ProducerRecord<>("topic", 0, key, value);
producer.send(record);

Здесь явно указывается партиция 0, чтобы все сообщения шли в одну партицию и сохранялся порядок.