Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java跨服务共享axon查询

我有三种不同的服务(A、B和C)正在运行,它们都连接到axonserver 4.3.3。除此之外,我还提供了一个包含所有事件的api服务,以便在所有服务之间共享。当一个事件被触发(比如服务A)时,它被其他服务(B&C)监听,它们会做出相应的反应

现在我还想共享查询,这样当一个服务(假设a)想要一些属于另一个服务(假设B)的信息时,它可以直接触发相应的查询,由服务B监听并返回信息

  1. axon中是否允许它(即,在服务之间共享查询,就像我们对事件所做的那样)
  2. 如果允许,它是否遵循axon最佳实践
  3. 如果不允许/不遵循最佳实践,什么是替代解决方案

UPDATE

我只是简单地将查询添加到公共api服务中,并从服务A启动它,如下所示:

  1. 当我使用queryGateway.query( findCourierByIdQuery, responseType)时:我得到了queryhandler not found exception
  2. 当我使用queryGateway.subscriptionQuery( findCourierByIdQuery, initialResponseType, updateResponseType)时:我什么都没有
  3. 当我使用queryGateway.scatterGather( findCourierByIdQuery, responseType, timeout, timeUnit):我得到一个空流

当我从服务B本身启动FindCourierBydQuery时,queryhandler被调用,我得到了正确的响应

我的观察是,只有当查询是从同一个组件(在本例中是服务B)触发时,查询处理程序才会被调用,如果我从其他组件(服务A)触发查询,则不会被调用

请注意,所有服务都在不同的主机和端口上独立运行,但都连接到同一台axonserver,查询句柄写在服务B中

所以基本上实现是这样的:

  • FindCourierBydQuery是在公共api服务中定义的
  • 服务A和B具有公共api服务的依赖性
  • 服务A执行FindCourierBydQuery的查询
  • 服务B具有FindCourierBydQuery查询处理程序实现

共 (0) 个答案