问题描述
有人可以建议使用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/
可以指导的第一条注释是
- 如果您像在https://github.com/AxonIQ/giftcard-demo/blob/master/src/main/java/io/axoniq/demo/giftcard/command/GcCommandConfiguration.java#L17中那样声明存储库,则此配置将接管放置在您的聚合中的注释。如果您喜欢注释,则可以删除此Bean定义。
在这里,将这段代码配置为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。