2017-10-18 158 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

相關問題