Axon Framework - 是否可以为多个 sagas 使用一个跟踪事件处理器?

Axon Framework - is it possible to have a single tracking event processor for multiple sagas?

让我们先说我使用的是 Axon Framework 3.1.2 版,并为 @EventHandlers 和 Sagas 启用了跟踪事件处理器。

在我看来,为 Sagas 创建事件处理器的当前默认行为是为单个 Saga 创建单个跟踪事件处理器。这在微服务规模上工作得很好,但在可能实现大量 Sagas 的大型单体应用程序中可能会成为问题。因为我正在编写这样的应用程序,所以我想更好地控制 运行 线程的数量,这反过来将使我更好地控制数据库连接池的使用、上下文切换和内存使用。理想情况下,我希望拥有与 CPU 个内核一样多的跟踪事件处理器,其中每个事件处理器执行多个 sagas and/or @EventHandlers.

我已经想到我可以通过 @ProcessingGroup 注释或 EventHandlingConfiguration::assignHandlersMatching 方法为 @EventHandlers 做到这一点,但 SagaConfiguration 似乎没有公开相似API。事实上,最具体的 SagaConfiguration::trackingSagaManager 方法被硬编码为创建一个新的 TrackingEventProcessor 对象,这让我觉得我想要实现的目标目前是不可能的。所以这是我的问题:是否有一些我遗漏的非直截了当的方法可以让我在单个事件处理器的上下文中执行多个 Sagas?

我可以向您确认,(目前)不可能由一个人管理多个 SagasEventProcessor。除此之外,我怀疑这样做的利弊,因为乍一看你的场景听起来并不奇怪。 我建议放弃对 AxonFramework GitHub page 的功能请求。这样我们 (1) 记录这个 idea/desire 和 (2) 有一个讨论是否实施这个的好地方。