Axon 4 - JpaEventStorageEngine 保护的构造函数

Axon 4 - JpaEventStorageEngine protected constructor

当尝试根据以下位置提供的文档在 Axon 4 中配置 Upcaster 时:Axon 4 Framework Versioning Events

我收到错误:JpaEventStorageEngine() 具有受保护的访问权限

    @Bean
    public JpaEventStorageEngine eventStorageEngine(
            Serializer serializer,
            DataSource dataSource,
            SingleEventUpcaster myUpcaster,
            EntityManagerProvider entityManagerProvider,
            PlatformTransactionManager transactionManager) {
        return new JpaEventStorageEngine(serializer,
                myUpcaster::upcast,
                dataSource,
                entityManagerProvider,
                transactionManager);
    }

我错过了什么?

我想我可以帮到你。

遗憾的是,您刚刚发现参考指南存在问题。 从 Axon 4 开始,所有主要基础设施组件不再通过构造函数创建,而是通过 Builder pattern.

因此,创建它的正确方法是:

@Bean
public JpaEventStorageEngine eventStorageEngine(Serializer eventSerializer,
                                                Serializer snapshotSerializer,
                                                DataSource dataSource,
                                                SingleEventUpcaster myUpcaster,
                                                EntityManagerProvider entityManagerProvider,
                                                TransactionManager transactionManager) throws SQLException {
    return JpaEventStorageEngine.builder()
                                .eventSerializer(eventSerializer)
                                .snapshotSerializer(snapshotSerializer)
                                .dataSource(dataSource)
                                .entityManagerProvider(entityManagerProvider)
                                .transactionManager(transactionManager)
                                .upcasterChain(myUpcaster)
                                .build();
}

我刚刚调整了参考指南以相应地反映这一点;对于给您带来的不便,我们深表歉意。