Получить доступ

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

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

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

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

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

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем