我有 2 种不同的微服务todo-service和validation-service以及命令类型CreateTodoCommand
和ValidateTodoCommand
.
如果我在一项服务中有一个命令处理程序,而在第二项服务中有另一个命令处理程序,我会No node known to accept
在发送服务不知道的命令时收到异常。
我可以拆分我@CommandHandler
的 s 以将它们用于不同的服务吗?
我有 2 种不同的微服务todo-service和validation-service以及命令类型CreateTodoCommand
和ValidateTodoCommand
.
如果我在一项服务中有一个命令处理程序,而在第二项服务中有另一个命令处理程序,我会No node known to accept
在发送服务不知道的命令时收到异常。
我可以拆分我@CommandHandler
的 s 以将它们用于不同的服务吗?
是的,这绝对是可能的@Stephan。假设您在 Spring Boot 环境中,您唯一需要做的就是为DistributedCommandBus
您想要的类型(例如 SpringCloud 或 JGroups)设置正确的依赖项并将axon.distributed.enabled
属性设置为true
.
该框架将自动搜索所有带@CommandHandler
注释的函数。如果您的应用程序仍然声明它找不到“期望命令的节点”,那么在连接过程中出现了故障。
或者更简单地说,我可以想到两个原因:1)您的@CommandHandler
注释函数没有注册到DistributedCommandBus
. 2) 消息处理信息不在您的节点之间共享。
无论如何,您的问题的简单答案是:是的,您可以@CommandHandler
在不同的服务中拥有带注释的功能。
但为什么它不起作用,是不同的。