目前我们正在使用 Axon 2。我们想将 Axon 2 升级到 4。我们使用带有重播选项的 Axon 2 订阅事件处理器。在 Axon 4 中,一个显着的区别是跟踪事件处理器。看来,跟踪处理器是重放的必备品。是否可以订阅和跟踪事件处理器?是否可以仅将跟踪处理器用于重播并留下其余部分?还是必须改变整个结构?
1 回答
让我给你一些背景知识来帮助你解决这个问题。
我们使用带有重播选项的 Axon 2 订阅事件处理器。
在 Axon Framework 2.x 中,没有SubscribingEventProcessor
. Axon 2 使用 eventCluster
对事件处理程序进行分组,并提供处理事件的技术逻辑。
是否可以订阅和跟踪事件处理器?
SubscribingEventProcessor
和TrackingEventProcessor
只不过是 的不同实现EventProcessor
。反过来EventProcessor
用于管理向您编写的事件处理组件提供事件的技术方面。
我所说的“事件处理组件”是指包含@EventHandler
注释方法的整个对象。
因此,EventProcessor
s 控制一个或多个事件处理组件。补充说,您可以拥有几个您认为合适的组。
结论是,在一个应用程序中确实有可能同时拥有TrackingEventProcessor
s 和SubscribingEventProcessor
s 。
还是必须改变整个结构?
然而,在这里我建议转向使用TrackingEventProcessor
s。它的作用是真正将您的命令端与查询端分开。这成立,因为 Axon 将使用专用线程从EventStore
使用TrackingEventProcessor
. ASubscribingEventProcessor
在将处理事件的同一线程中调用,这使您对应用程序有更同步的感觉。
正是这种隔离的力量使 Axon 成为在您的应用程序中使用的如此强大的工具,因为它为您提供了在需要时进一步解耦服务的自由。
所以本质上,不,你不必使用TrackingEventProcessor
. 然而,它是 Axon Framework 中的默认设置是有原因的,因为它为应用程序开发人员提供了很多好处(允许回放是其中之一)。
同时,阅读AxonIQ 上的这个TrackingEventProcessor
博客可能会很有趣。此外,AxonIQ 一直在提供网络研讨会,提供完整的 Axon 快速概览,让您也可以选择提问。这是相关网络研讨会的链接。