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

В англоязычной литературе можно встретить термины event и message.

Часто их путают между собой:

  • Message — понятие шире, чем event, потому что в него могут входить, например, acknowledgment (подтверждение), error message (сообщение об ошибке).
  • Event же всегда отражает факт изменения состояния.

Есть два ключевых паттерна проектирования событий. Давай посмотрим на них.

1. Event Notification (Уведомление)

В событии передается только ID объекта (например, order_id: 123).

JSON
{
  "type""payment-made",
  "paymentId""12345"
}
  • Плюс: Легкое сообщение.
  • Минус: Консьюмеру придется идти в твой сервис по API, чтобы узнать детали заказа (создается нагрузка).
2. Event-Carried State Transfer (Передача состояния)

Событие несет в себе все данные (сумму заказа, адрес, состав).

JSON
{
  "type""payment-made",
  "paymentId""12345",
  "amount"99.99,
  "currency""USD",
  "customerId""cust_789",
  "merchantId""merch_456",
  "timestamp""2025-01-15T10:30:00Z"
}
  • Плюс: Консьюмеру не нужно дергать твое API, у него есть всё для работы.
  • Минус: Сообщения становятся «жирными», их сложнее версионировать.