使用springboot 2.3.3和axon 4.4.2实现axon快照

问题描述

有人可以建议使用springBoot 2.3.3在AXON 4.4.2中实现快照的任何教程/示例项目吗?

我仔细阅读了文档(https://docs.axoniq.io/reference-guide/axon-framework/tuning/event-snapshots#snapshotting)并执行以下操作: AxonConfig.class

@Configuration
public class AxonConfig {

    @Bean
    public SnapshottriggerDeFinition app1Snapshottrigger(Snapshotter snapshotter) {
        return new EventCountSnapshottriggerDeFinition(snapshotter,10);
    }
}

集合

@Aggregate(snapshottriggerDeFinition = "app1Snapshottrigger")
public class MyAggregate {

    @AggregateIdentifier
    private String id;
    private String name;
    @AggregateMember
    private List<Address> addresses = new ArrayList<>();

    private  MyAggregate  () {

    }

    @CommandHandler
    private  MyAggregate  (CreateNameCommand createNameCommand) {
        -----
    }

    @EventSourcingHandler
    private void on(NameCreatedEvent nameCreatedEvent) {
       ----
    } 

我错过了什么吗?它会在阈值10处创建快照吗? 谢谢。

解决方法

不幸的是,在这种情况下,我们没有示例演示可供显示。

从您的代码段来看,所有内容均已就绪。也许还有其他配置正在接管您的注释。

尝试一下,我将您的配置应用于我们的https://github.com/AxonIQ/giftcard-demo/

可以指导的第一条注释是

在这里,将这段代码配置为Bean

@Bean
public Repository<GiftCard> giftCardRepository(EventStore eventStore,SnapshotTriggerDefinition giftCardSnapshotTrigger) {
    return EventSourcingRepository.builder(GiftCard.class)
            .snapshotTriggerDefinition(giftCardSnapshotTrigger)
            .eventStore(eventStore)
            .build();
}

@Bean
public SpringAggregateSnapshotterFactoryBean snapshotter() {
    var springAggregateSnapshotterFactoryBean = new SpringAggregateSnapshotterFactoryBean();
    //Setting async executors
    springAggregateSnapshotterFactoryBean.setExecutor(Executors.newSingleThreadExecutor());
    return springAggregateSnapshotterFactoryBean;
}

@Bean("giftCardSnapshotTrigger")
public SnapshotTriggerDefinition giftCardSnapshotTriggerDefinition(Snapshotter snapshotter) {
    return new EventCountSnapshotTriggerDefinition(snapshotter,10);
}

您可以查看客户端日志来检查快照是否工作正常:在同一agggregateId上发生10个事件之后,您应该找到此信息日志条目 o.a.a.c.event.axon.AxonServerEventStore : Snapshot created

要进行检查,可以使用REST api从聚合中检索事件 curl -X GET "http://localhost:8024/v1/events?aggregateId=A01" 这将产生一个流,其中包含从最新快照开始的事件:您将列出九个事件,直到处理第十个事件为止。之后,端点将列出快照中的事件。

您还可以检查/actuator/health端点:如果启用了showDetails(在EE中默认启用,在SE中默认未启用),它将显示最后一个快照令牌。

Corrado。