在Axon配置中指定快照的安全上下文,示例如下:
@Configuration
public class AxonConfig {
@Bean
public XStreamSerializer xStreamSerializer() {
return XStreamSerializer.builder()
.build();
}
@Bean
public JpaEventStorageEngine jpaEventStorageEngine(Serializer serializer, DataSource dataSource) {
return JpaEventStorageEngine.builder()
.snapshotSerializer(serializer)
.eventSerializer(serializer)
.dataSource(dataSource)
.build();
}
@Bean
public SnapshotTriggerDefinition snapshotTriggerDefinition(Snapshotter snapshotter) {
return new EventCountSnapshotTriggerDefinition(snapshotter, 100);
}
@Bean
public SpringAggregateSnapshotter snapshotter(JpaEventStorageEngine eventStorageEngine) {
return new SpringAggregateSnapshotter(eventStorageEngine);
}
@Bean
public Snapshotter snapshotter(JpaEventStorageEngine eventStorageEngine, EventBus eventBus) {
return new AggregateSnapshotter(eventStorageEngine, eventBus);
}
@Bean
public EventStorageEngine eventStorageEngine(Serializer serializer, DataSource dataSource) {
return JpaEventStorageEngine.builder()
.snapshotSerializer(serializer)
.eventSerializer(serializer)
.dataSource(dataSource)
.build();
}
@Bean
public EventProcessor snapshotEventProcessor(EventBus eventBus, EventStorageEngine eventStorageEngine, SnapshotTriggerDefinition snapshotTriggerDefinition) throws Exception {
return TrackingEventProcessor.builder()
.eventHandlerInvoker(new SimpleEventHandlerInvoker(snapshotter(eventStorageEngine)))
.messageSource(eventStorageEngine)
.tokenStore(getTransactionAwareTokenStore())
.name("snapshotEventProcessor")
.build();
}
}