Вопрос проверяет понимание паттерна обмена сообщениями для слабосвязной коммуникации микросервисов.
Сервисы публикуют события в топики Kafka, а другие подписываются на нужные топики и обрабатывают сообщения асинхронно. Это обеспечивает слабую связанность, масштабируемость и устойчивость: сервис-отправитель не ждёт ответа, а потребитель читает из топика в своём темпе.
Публикация событий:
- Сервис A создаёт сообщение и продюсит его в топик, например order-created.
- Отправка не блокирует работу, можно дождаться acks или не ждать.
Подписка и обработка:
- Сервис B в составе консюмер-группы подписан на order-created.
- При появлении нового сообщения B читает и выполняет бизнес-логику (выполнение платежа, уведомление).
Гарантия доставки и порядок:
- У каждой партиции свой порядок.
- Асинхронность: отложенная или повторная обработка при отказах.
Ошибки и повторные попытки:
- При падении консюмера можно переназначить партиции другой инстанции.
- Используют «мёртвые» топики (Dead Letter Queue) для сообщений с постоянной ошибкой.
Преимущества и применимость:
- Расшаренный лог событий.
- Масштабирование отдельных консьюмеров.
- Ослабление связи между сервисами.