Добавить события в хранилище событий

Мы используем фреймворк Axon версии 3.4.2 и обнаружили ошибку внутри нашего кода. Ошибка связана с отсутствующим событием, которое не было опубликовано. Решение состоит в том, чтобы исправить код, но это не исправит хранилище событий и представления.

У меня вопрос, как это исправить? Мы думали о добавлении событий в хранилище событий (мы используем хранилище событий JDBC), но без правильных данных новые события не будут обработаны. Лучше всего было бы сделать это в приложении, опубликовав событие в аксоне, и позволить аксону обрабатывать все детали, но это единовременное корректирующее действие.

Есть ли способ «ввести» однократное событие в аксон?


person Johan Basson    schedule 14.11.2019    source источник
comment
Нет прямого опыта Axon. Насколько я понимаю, в общем случае это будет конкретная корректирующая команда и событие, такое как PulledSomeMissingOrderInfoFromShopify (например, мы забыли захватить удаленный IP-адрес клиента, пользовательский агент и isMobile), .. Сгенерированное событие может быть обогащено из предыдущие данные (вся остальная информация уже находится в вашем слое чтения из исходного события ShopifyOrderCreated), а обработка событий может переписывать представления, публиковать что-то в шине событий или делать что-то еще ... и т. д.   -  person Mâtt Frëëman    schedule 14.11.2019


Ответы (1)


Комментарий, которым поделился Мэтт, концептуально говорит о том, что вам следует делать. Таким образом, чтобы решить непреднамеренно возникшую проблему, вы должны произвести компенсационное действие, также известное как команда. Эта команда будет обработана в вашей командной модели, проверит состояние модели и опубликует желаемое событие.

Добавлено, я предполагаю, что это ваше событие должно происходить из агрегата, верно? В терминах Axon это означает, что вы хотите опубликовать событие домена, а не обычное событие.

Хотя вы можете публиковать события в EventBus или сохранять в EventStore напрямую, довольно сложно провести эти события домена в этом процессе. Таким образом, поскольку я начал с того, что Мэтт Фриман прокомментировал по вашему вопросу, компенсирующее действие было бы подходящим вариантом, с Axon или без него.


Последнее замечание, знайте, что Axon 4.2 уже вышел некоторое время назад. Хотя Axon 3 все еще будет исправлять ошибки, ни одна из них не произошла за последний год. Проще говоря, Axon 3 не ведется активной разработки. Таким образом, переход на более новую версию будет полезен для вашего проекта.

person Steven    schedule 15.11.2019