Выбор ответа Middle Асинхронные интеграции и брокеры обновлено

Порядок сообщений в Kafka

Вопрос

Нужно, чтобы события одного заказа (создан, оплачен, отменён) обрабатывались строго по порядку. Как этого добиться в Kafka?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Публиковать с ключом orderid: события заказа попадут в одну партицию. Kafka гарантирует порядок только внутри партиции.

Варианты ответа

  1. Kafka сама гарантирует порядок во всём топике, ничего делать не нужно
  2. Публиковать с ключом order_id: события заказа попадут в одну партициюправильный ответ
  3. Создать топик с одной партицией на весь поток событий
  4. Добавить в событие порядковый номер, брокер отсортирует по нему

Разбор

Kafka гарантирует порядок только внутри партиции. Ключ сообщения определяет партицию, так события одного заказа идут по порядку, а разные заказы обрабатываются параллельно. Одна партиция тоже даст порядок, но убьёт масштабирование. Порядка по всему топику нет. Брокер не сортирует по полям сообщения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.