Могут ли сосуществовать обработчик событий подписки и обработчик событий отслеживания?

В настоящее время мы используем Axon 2. Мы хотели бы обновить Axon 2 до версии 4. Мы использовали обработчик событий подписки Axon 2 с параметрами воспроизведения. В Axon 4 одним существенным отличием являются обработчики событий отслеживания. Кажется, Трекинговые процессоры необходимы для воспроизведения. Возможно ли иметь обработчики событий подписки и отслеживания? Можно ли использовать следящие процессоры только для повтора и оставить все остальное? Или нужно менять всю структуру?


person user3022382    schedule 11.06.2020    source источник


Ответы (1)


Позвольте мне дать вам некоторую информацию, чтобы помочь в этом вопросе.

Мы использовали обработчик событий подписки Axon 2 с возможностью воспроизведения.

В Axon Framework 2.x не было понятия SubscribingEventProcessor. Axon 2 использовал событие Cluster для группировки обработчиков событий и обеспечения технической логики обработки событий.

Возможно ли иметь обработчики событий подписки и отслеживания?

SubscribingEventProcessor и TrackingEventProcessor являются не более чем отдельными реализациями EventProcessor. EventProcessor, в свою очередь, используется для управления техническими аспектами предоставления событий компонентам обработки событий, которые вы пишете.

Что я имею в виду под «компонентом обработки событий», так это весь объект с @EventHandler аннотированными методами в нем.

Таким образом, EventProcessors контролируют один или несколько компонентов обработки событий. Кроме того, вы можете иметь несколько таких групп по своему усмотрению.

В заключение, действительно возможно иметь в приложении как TrackingEventProcessors, так и SubscribingEventProcessors.

Или нужно менять всю структуру?

Однако именно здесь я предлагаю перейти к использованию TrackingEventProcessors. То, что он делает, действительно отделяет вашу сторону Command от вашей стороны Query. Это сохраняется, поскольку Axon будет использовать выделенные потоки для извлечения событий из EventStore при использовании TrackingEventProcessor. SubscribingEventProcessor вызывается в том же потоке, который будет обрабатывать событие, что придает приложению более синхронный вид.

Это именно та сила разделения, которая делает Axon таким мощным инструментом для использования в вашем приложении, поскольку он дает вам свободу дальнейшего разделения ваших сервисов, когда возникает необходимость.

Так что, по сути, нет, вам не нужно использовать TrackingEventProcessor. Тем не менее, это значение по умолчанию в Axon Framework по той причине, что оно предоставляет множество преимуществ (позволяя повторам быть одним из них) для разработчиков приложений.

А пока может быть интересно почитать этот блог от AxonIQ на TrackingEventProcessor. Кроме того, AxonIQ проводит вебинары, предоставляя краткий обзор Axon в целом, давая вам возможность задавать вопросы. Вот ссылка на вебинар под вопросом.

person Steven    schedule 11.06.2020