Axon 3 не найден обработчик

Я новичок в 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());
    }
}

person gargi258    schedule 18.10.2017    source источник


Ответы (1)


надеюсь, я смогу помочь вам с этим :-)

Если вы запускаете свое приложение через Spring Boot и используете axon-spring-boot-starter зависимость для автоматического подключения всего, тогда я знаю, что вам не хватает. CreateBookHandler не является Spring Bean, поэтому автоматическая настройка Axon не замечает его как bean-компонент и, следовательно, не может найти на нем аннотированную функцию @CommandHandler.

Кроме того, я обычно помещал свои функции обработки команд непосредственно в агрегат, а не в отдельный компонент в моей настройке. Причина в том, что команды в большинстве случаев выполняются в контексте одного агрегата, так почему бы не позволить самому агрегату обрабатывать его?

Надеюсь, что это помогает вам!

person Steven    schedule 19.10.2017
comment
Вы правы на 100%. Я забыл про обработчик меток как bean. Может, не забыл, я новичок в этом стеке технологий. Спасибо за терпение и точный ответ. - person gargi258; 20.10.2017
comment
Нет проблем, я рада, что мне в этом помогли! :-) - person Steven; 23.10.2017