多节点环境中的订阅查询
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。
我们的轴突支持服务在多个节点上运行。我们的事件处理器正在跟踪(1 个段,因此在一个节点上处于活动状态)。如果我在节点 A 上订阅了一个查询,而应该触发更新的事件在节点 B 上处理,那么节点 A 将错过这个。
这是设计使然还是应该起作用,我是否错误配置了应用程序?
如果是前者,我们可以做些什么来以最轴突惯用的方式实现类似的功能? (目前我们直接轮询数据源/投影 x 秒)
您正在使用的 QueryBus
是一个 SimpleQueryBus
,它始终位于单个 JVM 中。
如果您需要 QueryBus
的分布式版本,您应该转向使用 Axon Server 作为在节点之间路由查询的集中方式。
请注意,尽管您可以自己创建它,但人们已经尝试这样做(如 this 框架上的 Pull Request 所示)并决定反对它,支持在 Axon Server 中进行的优化。
所以,简而言之,我假设您目前排除了 Axon 服务器连接器。
因此,该框架为您提供了 SimpleQueryBus
,它确实被设计为不跨越多个节点。
最后,实现查询分布式路由的最快方法是使用 Axon Server。