2017-10-18 143 views
1

我是Java初学者。我会配置我的处理程序仅用于工作和处理命令。在这一刻我收到ExceptionNo handler was subscribed to command [com.capgemini.books.CreateBook]Axon 3未找到处理程序

我的代码如下所示:

@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()); 
    } 
} 

回答

2

希望我可以帮你这个:-)

以你通过春启动运行你的应用程序和您正在使用的axon-spring-boot-starter依赖关系自动连线一切,然后我知道你错过了什么。 CreateBookHandler不是Spring Bean,因此Axon的自动布线设置并没有注意到它是一个bean,因此无法在其上找到@CommandHandler注释的函数。

此外,虽然我通常把我的命令处理函数直接放在聚合上,而不是在我的设置中的一个单独的组件。原因在于,因为命令大多数情况下都是单个聚合的情况下,所以为什么不让聚合本身处理呢?

希望这可以帮助你!

+1

你是100%的权利。我忘记了标记处理程序是一个bean。也许不会忘记,我只是这个技术堆栈的初学者。感谢您的耐心和准确的答复。 – gargi258

+0

没问题,我很高兴得到这个帮助! :-) – Steven

相关问题