2

让我们首先说我正在使用 Axon Framework 3.1.2 版本,并为@EventHandlersSagas 和 Sagas 启用了跟踪事件处理器。

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

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

4

1 回答 1

0

我可以向您确认,(目前)不可能有多个 Sagas 由单个EventProcessor. 除此之外,我怀疑这样做的优点和缺点,因为你的场景乍一看并不奇怪。我建议在 AxonFramework GitHub页面上提出功能请求。这样,我们 (1) 记录了这个想法/愿望,并且 (2) 有一个好地方来讨论是否实施这个。

于 2018-03-09T07:35:50.443 回答