Axon框架支持多数据库配置,可以通过配置多个EventStore模块实现。具体实现方式如下:
1.定义多个EventStore Bean
@Configuration public class MultipleDbConfig {
@Primary
@Bean(name = "eventStorePrimary")
public EmbeddedEventStore primaryEventStore(EventStorageEngine eventStorageEngine) {
return EmbeddedEventStore.builder()
.storageEngine(eventStorageEngine)
.build();
}
@Bean(name = "eventStoreSecondary")
public EmbeddedEventStore secondaryEventStore(EventStorageEngine eventStorageEngine) {
return EmbeddedEventStore.builder()
.storageEngine(eventStorageEngine)
.build();
}
}
2.创建一个多数据库配置文件
axon.multiple-dbs-configurations=com.example.demo.config.PrimaryAxonConfig,com.example.demo.config.SecondaryAxonConfig
3.实现多数据库配置
在每个数据库配置类中按需配置对应的EventStorageEngine和Serializer即可(这里以第二个数据库配置为例):
@Configuration public class SecondaryAxonConfig {
@Autowired
private DataSource dataSource;
@Bean
public EventStorageEngine eventStorageEngine(Serializer serializer) {
return JdbcEventStorageEngine.builder()
.dataSource(dataSource)
.transactionManager(new SpringTransactionManager(new DataSourceTransactionManager(dataSource)))
.serializer(serializer)
.schema(EventSchemaConfiguration.useSingleSchema())
.build();
}
@Bean
public Serializer serializer() {
return Serializer.using(Kryo.class);
}
}
4.在代码中注入对应的EventStore Bean并使用
@Component public class MyEventHandler {
@Autowired
@Qualifier("eventStoreSecondary")
private EventStore secondaryEventStore;
...
}
需要注意的是,当使用Axon Server时,多数据库配置方法与上述略有不同,可以参考官方文档详细了解。