当前位置: 首页 > 知识库问答 >
问题:

连接到Axon服务器时更改节点的实例名

佴普松
2023-03-14

在其中一个测试中,它(一个节点)通过SpringApplicationBuilder(在不同的配置文件下)创建另一个节点,连接到与其创建者相同的Axon服务器实例。

我遇到的问题是事件处理开始出现奇怪的行为,我认为原始应用程序中任何带有第二个创建节点的“公共”事件处理程序都会被忽略/丢失。当实例在测试环境之外启动时,一切似乎都正常。

我的想法是,在测试中,这两个节点最终在Axon服务器上共享一个实例名(因为它们共享一个processId和主机名),这会扰乱处理程序注册/跟踪。这有道理吗?

是否有一种方法可以手动为连接到Axon服务器的节点设置该值,以便在测试期间不会发生这种情况?

共有1个答案

裴华荣
2023-03-14

我不确定哪些组件是由外部测试应用程序启动的,哪些是由内部测试应用程序启动的。小心有多个方面可能会阻碍你的工作。

>

  • AxonServer可能会混淆,并认为这两个组件实际上是相同的。实际上,两者的主机名和processId将是相同的,这使得AxonServer认为它只是在处理来自同一个应用程序的多个连接。为了避免这种情况,您可以使用axon.axonserver.clientId属性定义一个不同的clientId。只需将其设置为一个随机值,就可以解决问题的这一部分。

    另一个问题是,您的组件可能有同名的跟踪处理器。在这种情况下,AxonServer将把处理器的两个实例视为同一处理器的多个实例,并平衡两个实例之间的负载(如果存在足够的段)。如果只有一个可用的处理段,那么只有一个处理程序将处于活动状态。另一个组件将不会接收任何事件。

    为了避免这种情况,在测试用例中,给处理器的名称加上一些唯一的前缀。可以使用EventProcessingConfigurerAssignProcessingGroup(function assignmentRule) 方法更改将组分配给处理器的规则。默认情况下,处理器的名称与组的名称相同。在您的情况下,您可以(基于您设置的测试配置文件)在处理器名称中添加一个唯一的与测试相关的前缀。这将“欺骗”Axon相信它们是不同的处理器,需要并发运行。

    我建议先试试方案1。如果这对测试来说还不够,你也可以试试第二个。

  •  类似资料:
    • 我有一个Spring Boot微服务项目,用三个微服务来测试分布式事务管理的saga模式。 当我使用 命令后,微服务无法连接到Axon服务器,我收到了以下错误: 我的问题是为什么微服务在中寻找axon服务器,这显然是错误的,并且违反了它们在中的配置: 这里的轴子服务器的容器名称。

    • 我有发现服务:https://github.com/Naresh-Chaurasia/API-MicroServices-Kafka/tree/master/Microservices-CQRS-SAGA-Kafka/DiscoveryService 我有产品服务:https://github.com/Naresh-Chaurasia/API-MicroServices-Kafka/tree/ma

    • 我正在做一个项目,我需要发送一个音频流到一个节点。js服务器。我可以使用此功能捕获麦克风声音: 如你所见,我能够捕捉音频并在网站上播放。 现在我想把那个音频流发送到一个节点。js服务器,并将其发送回其他客户端。像语音聊天,但我不想使用WebRTC,因为我需要服务器中的流。我怎样才能做到这一点?我可以用插座吗。我想这样做?在我看到的示例中,他们录制了音频,并发送了一个文件,但我需要“实时”音频。

    • 我有一个节点。尝试连接到mongodb的js服务器(使用mongoose): 尽管mongodb已启动并运行,但连接失败。 我得到以下日志: 7月18日星期四13:24:50.124[initandlisten]选项:{dbpath:“/home/pi/mongodb/”} Thu Jul 18 13:24:50.166[initandlisten]正在等待端口27017上的连接 Thu Jul

    • 我正在尝试在nodeJS中实现一个OAUTH2服务器,它允许客户端应用程序登录使用我网站的用户(比如用google登录,在我的例子中是amazon alexa,它使用这个API/客户端应用程序)。 我尝试使用oauth2orise(https://www.npmjs.com/package/oauth2orize),并引用了几个链接:- https://hnryjms.io/2014/07/oau