首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用springboot 2.3.3和axon 4.4.2实现axon快照

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

Stack Overflow用户
提问于 2020-09-07 02:44:28
回答 1查看 259关注 0票数 0

有没有人能推荐一些在AXON 4.4.2和springBoot 2.3.3中实现快照的教程/示例项目?

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

代码语言:javascript
复制
@Configuration
public class AxonConfig {

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

聚合

代码语言:javascript
复制
@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处创建快照。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-09-09 18:14:28

不幸的是,在这种情况下,我们没有现成的示例演示。

从您的代码片段看,一切都已就绪。也许有一些其他的配置正在接管您的注释。

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

首先要注意的是,can指南如下

这里的这段代码将其配置为Bean

代码语言:javascript
复制
@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"中检索事件,这将生成一个包含从最新快照开始的事件的流:您将列出9个事件,直到处理第10个事件。之后,端点将列出快照中的事件。

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

科拉多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63767707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档