订阅事件处理器和跟踪事件处理器可以共存吗?

时间:2020-06-11 12:03:14

标签: java cqrs complex-event-processing axon replay

当前,我们正在使用Axon2。我们想将Axon 2升级到4。我们使用Axon 2订阅事件处理器和重播选项。在Axon 4中,一个重大区别是跟踪事件处理器。看来,跟踪处理器必须重播。是否可以订阅和跟踪事件处理器?是否可以将跟踪处理器仅用于重播并保留其余部分?还是必须改变整体结构?

1 个答案:

答案 0 :(得分:1)

让我给您一些背景知识以帮助解决问题。

我们使用带有重播选项的Axon 2订阅事件处理器。

在Axon Framework 2.x中,没有SubscribingEventProcessor的概念。 Axon 2使用事件Cluster来对事件处理程序进行分组,并提供处理事件的技术逻辑。

是否有可能订阅和跟踪事件处理器?

SubscribingEventProcessorTrackingEventProcessor仅仅是EventProcessor的不同实现。 EventProcessor依次用于管理向您编写的事件处理组件提供事件的技术方面。

“事件处理组件”是指带有@EventHandler批注方法的整个对象。

因此,EventProcessor受一个或几个事件处理组件的控制。添加后,您可以根据需要选择其中几个组。

最后,确实可以在应用程序中同时包含TrackingEventProcessorSubscribingEventProcessor

还是必须改变整体结构?

但是我在这里建议向TrackingEventProcessor的使用迁移。它的作用是将Command端与Query端真正分开。之所以成立,是因为Axon在使用EventStore时将使用专用线程从TrackingEventProcessor中提取事件。在处理该事件的同一线程中调用SubscribingEventProcessor,使您对应用程序更具同步感。

正是这种隔离的力量使Axon成为在应用程序中使用的强大工具,因为它使您可以在需要时自由地进一步分离服务。

因此,从本质上讲,不,您不必使用TrackingEventProcessor。但是,由于某种原因,它是Axon Framework的默认设置,因为它为应用程序开发人员提供了很多好处(允许重播成为其中之一)。

同时,从TrackingEventProcessor上的AxonIQ上的this博客开始阅读可能会很有趣。此外,AxonIQ一直在提供在线研讨会,全面介绍Axon,使您也可以提出问题。 Here是相关网络研讨会的链接。