如何配置聚合 class 来处理命令和调度事件而不使用 java 中的 spring 与轴突框架?

How to configure aggregate class which handles command and dispatch event without using spring in java with axon framework?

我想设置聚合 class 来处理命令和分派事件,而不使用 java 中的 spring 使用 axon 框架。我已经使用@Aggregate、@CommandHandler 之类的注释通过 spring 引导执行了它,但没有 spring.

就无法执行

我使用了默认配置器对象和命令总线对象。我能够分派命令并在自定义处理程序中处理它,但我想以聚合方式处理它并分派事件并以聚合方式处理该事件。我知道注释在 spring boot.

中启用
@Aggregate
public class PlayerAggregate{

    @AggregateIdentifier
    private String playerId;

    public PlayerAggregate() {
    }

    @CommandHandler
    public PlayerAggregate(CreatePlayerCommand createPlayerCommand){
        AggregateLifecycle.apply(new PlayerCreatedEvent(createPlayerCommand.playerId ));
    }

    @EventSourcingHandler
    protected void on(PlayerCreatedEvent playerCreatedEvent){
        this.playerId = playerCreatedEvent.playerId;
        System.out.println("event completed");
    }
}

您根本不必使用 Spring。

为了配置基础结构组件并定义它们与每个功能组件的关系,Axon 提供了 Java 配置 API。

 /* Axon configuration */
    Configuration config = DefaultConfigurer.defaultConfiguration()
            .configureAggregate(GiftCard.class)
            // .configureEmbeddedEventStore(c -> new InMemoryEventStorageEngine())
            .eventProcessing(ep -> ep.registerEventHandler(c -> new GiftCardEventHandler(c.queryUpdateEmitter(), querySideDBMap)))
            .registerQueryHandler(c -> new GiftCardQueryHandler(querySideDBMap))
            .start();

在此处查看完整的 example/demo 项目:https://github.com/idugalic/axon-vanilla-java-demo