2

我是Java的初学者。我只会为工作和处理命令配置我的处理程序。此刻我收到Exception No handler was subscribed to command [com.capgemini.books.CreateBook]

我的代码如下所示:

@Configuration
public class ControllerConfig {
    @Bean
    public CommandBus commandBus() {
        return new SimpleCommandBus();
    }
}

public class CreateBookHandler {
    public CreateBookHandler() { }

    @CommandHandler
    public void handle(CreateBook command) {
       Book newBook = new Book(1001L, "anonymous", command.bookTitle());
    }
}
4

1 回答 1

4

希望我能帮助你:-)

让您通过 Spring Boot 运行您的应用程序,并且您正在使用axon-spring-boot-starter依赖项自动连接所有内容,那么我知道您缺少什么。它CreateBookHandler不是 Spring Bean,因此 Axon 的自动布线设置不会将其视为 bean,因此无法@CommandHandler在其上找到带注释的函数。

此外,我通常会将我的命令处理函数直接放在聚合上,而不是放在我的设置中的单独组件中。这样做的原因是因为命令大部分时间都在单个聚合的上下文中,那么为什么不让聚合本身来处理它呢?

希望这可以帮助你!

于 2017-10-19T07:09:55.353 回答