События по одному заказу приходят потребителю не в том порядке
Сервис публикует события OrderCreated, OrderPaid, OrderShipped в топик Kafka с шестью партициями. Ключ сообщения не задаётся.
Потребитель жалуется: иногда OrderPaid по заказу приходит раньше, чем OrderCreated, и обработка падает.
В чём причина?
- Порядок в Kafka гарантируется только внутри партиции; ключом сообщения нужно сделать идентификатор заказа
- Порядок нарушается из-за нескольких потребителей в группе: нужно оставить одного потребителя на весь топик
- Kafka не гарантирует порядок ни при каких условиях: упорядочивать сообщения обязан потребитель по метке времени
- Причина в повторных отправках продюсера: достаточно отключить повторы при ошибках сети
