Должны ли события поддерживать историю, или есть ли смысл для этого?
Представьте себе, что система A передает событие E, которое представляет интерес для системы B. В результате EB генерирует свое собственное событие E', которое также получает трансляцию. Должно ли E' содержать в себе событие, которое его вызвало (т. Е. E), в случае, если позднее станет полезным понять, какие действия привели к созданию E'?
И если это не всегда полезно, может ли быть несколько сценариев, в которых удобно отслеживать историю события?
Заранее спасибо!
PD: Я понимаю, что вы могли бы расширить этот аргумент и в конечном итоге получить очень тяжелые события (или даже бесконечно большие, если ваш поток сообщений описывает цикл). Рассмотрим просто сохранение идентификатора для непосредственного инициирующего события в этом сценарии.
0 ответов
Я дам ответ, основываясь на моем собственном опыте. Если это отличается от вашего собственного опыта, я хотел бы услышать это, пожалуйста!
Хотя интересная концепция, события, содержащие их предшествующие события, нецелесообразны. Русские кукольные события препятствуют развитию их схем, связывая их вместе.
Если бы событие E' содержало предшествующее событие E, любое (не обратно совместимое) изменение схемы E обязательно потребовало бы изменения в содержащей схеме E'. Представьте себе, что вы применяете это ограничение к цепочке событий!
Простота эволюции, по-видимому, является ключом к архитектуре, управляемой событиями, и было бы мало выгод от разделения приложений на различные развертываемые объекты, чтобы только связать их снова с помощью схем событий, которые они генерируют.
Опять же, хотя это теоретически интересно, я также не нашел никакого бизнес-обоснования для этого, мне обычно приходилось пересылать информацию, относящуюся к цепочке событий, такую как идентификатор клиента, идентификатор заказа или подобное, но никогда полное событие. Случайно сгенерированный искусственный идентификатор (в том смысле, что он не имеет делового значения), который живет во всей цепочке событий, был полезен для целей отладки / мониторинга (например, чтобы выяснить, как далеко событие прошло через экосистему).