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