Вопрос с собеседования · Брокеры сообщений

Какие поля обязательно закладывают в конверт (envelope) сообщения?

MiddleПроектирование событий
Ещё спрашивают так:
  • Какие метаданные должны быть в каждом событии?
Коротко

В конверт кладут: id события (для идемпотентности), тип и версию схемы, время события, источник, correlation/trace id и id агрегата.

  • id — дедупликация у потребителей
  • Версия схемы — эволюция формата
  • trace id — сквозная трассировка через брокер

А ещё Список получателей в событии — признак, что это скрытая команда

Подробно

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

Что хотят услышать

  • Обязательные поля и зачем каждое.
  • Чего в событии быть не должно.

Частые ошибки

  • Складывать метаданные вперемешку с бизнес-полями.
  • Указывать в событии, кто должен его обработать.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Уникальный идентификатор события для дедупликации
  • ✓Тип события и версию схемы
  • ✓Время события и идентификатор корреляции
  • ✗Список всех потребителей, которые должны обработать это сообщение

Что спросят дальше

  • Чем время события отличается от времени публикации?
  • Как идентификатор события используется для дедупликации?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования