I have the solution to my problem…
`
import com.mongodb.MongoClient
import org.axonframework.axonserver.connector.AxonServerConfiguration
import org.axonframework.axonserver.connector.AxonServerConnectionManager
import org.axonframework.axonserver.connector.event.axon.AxonServerEventStore
import org.axonframework.commandhandling.CommandBus
import org.axonframework.commandhandling.gateway.CommandGateway
import org.axonframework.commandhandling.gateway.DefaultCommandGateway
import org.axonframework.commandhandling.gateway.IntervalRetryScheduler
import org.axonframework.commandhandling.gateway.RetryScheduler
import org.axonframework.config.EventProcessingConfigurer
import org.axonframework.eventhandling.EventBus
import org.axonframework.eventhandling.tokenstore.TokenStore
import org.axonframework.eventsourcing.eventstore.EmbeddedEventStore
import org.axonframework.eventsourcing.eventstore.EventStorageEngine
import org.axonframework.eventsourcing.eventstore.EventStore
import org.axonframework.extensions.mongo.DefaultMongoTemplate
import org.axonframework.extensions.mongo.eventsourcing.eventstore.MongoEventStorageEngine
import org.axonframework.extensions.mongo.eventsourcing.tokenstore.MongoTokenStore
import org.axonframework.messaging.interceptors.BeanValidationInterceptor
import org.axonframework.serialization.Serializer
import org.axonframework.spring.config.AxonConfiguration
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import java.util.concurrent.Executors
@Configuration
@EnableAutoConfiguration
class AxonConfig {
def mongoDbName = ‘my-db’
@Bean(“mongoEventStore”)
EventStore mongoEventStore(EventStorageEngine eventStorageEngine) {
EventBus eventBus = EmbeddedEventStore.builder()
.storageEngine(eventStorageEngine)
.build()
eventBus.registerDispatchInterceptor(new BeanValidationInterceptor())
return eventBus
}
@Bean(“axonEventStore”)
EventStore eventStore(AxonServerConfiguration axonServerConfiguration,
AxonConfiguration configuration,
AxonServerConnectionManager axonServerConnectionManager,
Serializer snapshotSerializer,
@Qualifier(“eventSerializer”) Serializer eventSerializer) {
return AxonServerEventStore.builder()
.configuration(axonServerConfiguration)
.platformConnectionManager(axonServerConnectionManager)
.snapshotSerializer(snapshotSerializer)
.eventSerializer(eventSerializer)
.upcasterChain(configuration.upcasterChain())
.build()
}
@Bean
EventStorageEngine eventStorageEngine(DefaultMongoTemplate mongoTemplate) {
return MongoEventStorageEngine.builder()
.mongoTemplate(mongoTemplate).build()
}
@Bean
CommandGateway commandGateway(CommandBus commandBus, RetryScheduler retryScheduler) {
return DefaultCommandGateway.builder()
.commandBus(commandBus)
.retryScheduler(retryScheduler)
.dispatchInterceptors([new BeanValidationInterceptor()])
.build()
}
@Bean
RetryScheduler retryScheduler() {
return IntervalRetryScheduler.builder()
.retryExecutor(Executors.newScheduledThreadPool(2))
.retryInterval(100)
.maxRetryCount(10)
.build()
}
@Bean
DefaultMongoTemplate defaultMongoTemplate(MongoClient client) {
return DefaultMongoTemplate.builder()
.mongoDatabase(client, mongoDbName)
.build()
}
@Bean
TokenStore tokenStore(Serializer serializer, DefaultMongoTemplate mongoTemplate) {
return MongoTokenStore.builder()
.mongoTemplate(mongoTemplate)
.serializer(serializer)
.build()
}
@Autowired
void config(EventProcessingConfigurer configurer,
@Qualifier(“mongoEventStore”) EventStore mongoEventStore,
@Qualifier(“axonEventStore”) EventStore axonEventStore) {
configurer.registerSubscribingEventProcessor(“EnrollmentSummary”, { c -> return mongoEventStore })
configurer.registerSubscribingEventProcessor(“ToChannelServices”, { c -> return mongoEventStore })
configurer.registerTrackingEventProcessor(“ProgramService”, { c -> return axonEventStore })
}
}
`