多节点环境中的订阅查询

Subscription queries in a multi-node environment

我们的轴突支持服务在多个节点上运行。我们的事件处理器正在跟踪(1 个段,因此在一个节点上处于活动状态)。如果我在节点 A 上订阅了一个查询,而应该触发更新的事件在节点 B 上处理,那么节点 A 将错过这个。

这是设计使然还是应该起作用,我是否错误配置了应用程序?

如果是前者,我们可以做些什么来以最轴突惯用的方式实现类似的功能? (目前我们直接轮询数据源/投影 x 秒)

您正在使用的 QueryBus 是一个 SimpleQueryBus,它始终位于单个 JVM 中。

如果您需要 QueryBus 的分布式版本,您应该转向使用 Axon Server 作为在节点之间路由查询的集中方式。

请注意,尽管您可以自己创建它,但人们已经尝试这样做(如 this 框架上的 Pull Request 所示)并决定反对它,支持在 Axon Server 中进行的优化。

所以,简而言之,我假设您目前排除了 Axon 服务器连接器。 因此,该框架为您提供了 SimpleQueryBus,它确实被设计为不跨越多个节点。 最后,实现查询分布式路由的最快方法是使用 Axon Server。