Вступить в клуб →
сложнаявопросКэш, очереди и микросервисы

События одного заказа приходят не в том порядке

Топик Kafka order-events имеет 6 партиций, продюсер публикует сообщения без ключа. Группа потребителей из 6 экземпляров обрабатывает события заказов.

В проде регулярно ловят ошибку: OrderPaid обрабатывается раньше, чем OrderCreated по тому же заказу, и обработчик падает на отсутствующем заказе.

Что нужно изменить?

  • Kafka гарантирует порядок в пределах топика, значит дело в потребителях: нужно увеличить их количество, чтобы они не отставали друг от друга
  • Публиковать события с ключом, равным идентификатору заказа: все события одного заказа попадут в одну партицию
  • Оставить в топике одну партицию — иного способа сохранить порядок событий не существует
  • Включить транзакции продюсера: они упорядочат сообщения между партициями

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела