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

Чем событие (event) отличается от команды (command)?

JuniorПроектирование событий
Ещё спрашивают так:
  • Чем событие отличается от команды?
Коротко

Событие — факт в прошедшем времени («Заказ оплачен»), получателей может быть много, издатель их не знает. Команда — намерение в повелительном наклонении («Спиши деньги»), исполнитель один.

  • Событие нельзя отклонить — оно уже произошло
  • Команду исполнитель может отклонить
  • Название подсказывает природу сообщения

А ещё Событие — pub/sub, команда — очередь к конкретному сервису

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

Подробно

Различие влияет на дизайн напрямую. У события может быть сколько угодно подписчиков, и издателю всё равно, кто отреагирует, — поэтому добавление нового потребителя ничего не ломает. У команды исполнитель один и от него ждут выполнения, а значит нужен явный получатель и обработка отказа. Заметно и по именованию: события называют в прошедшем времени, команды — в повелительном наклонении.

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

  • Различие по смыслу и получателям.
  • Пример каждого.

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

  • Называть событием сообщение, которое на самом деле требует конкретного действия от конкретного сервиса.
  • Смешивать оба смысла в одном сообщении.

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

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Событие сообщает о свершившемся факте и адресовано всем, кому интересно; команда выражает намерение и адресована конкретному исполнителю
  • ✗Событие передаётся синхронно, команда — асинхронно
  • ✗Событие содержит больше данных, чем команда
  • ✗Разница только в названии сообщения

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

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

Разбор темы

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

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

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

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

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