@ConditionalOnBean(QueryInvocationErrorHandler.class) @ConditionalOnMissingBean(QueryBus.class) @Qualifier("localSegment") @Bean public SimpleQueryBus queryBus(AxonConfiguration axonConfiguration, TransactionManager transactionManager, QueryInvocationErrorHandler eh) { return SimpleQueryBus.builder() .messageMonitor(axonConfiguration.messageMonitor(QueryBus.class, "queryBus")) .transactionManager(transactionManager) .errorHandler(eh) .queryUpdateEmitter(axonConfiguration.getComponent(QueryUpdateEmitter.class)) .build(); }
@ConditionalOnMissingBean(value = {QueryBus.class, QueryInvocationErrorHandler.class}) @Qualifier("localSegment") @Bean public SimpleQueryBus queryBus(AxonConfiguration axonConfiguration, TransactionManager transactionManager) { return SimpleQueryBus.builder() .messageMonitor(axonConfiguration.messageMonitor(QueryBus.class, "queryBus")) .transactionManager(transactionManager) .errorHandler(axonConfiguration.getComponent( QueryInvocationErrorHandler.class, () -> LoggingQueryInvocationErrorHandler.builder().build() )) .queryUpdateEmitter(axonConfiguration.getComponent(QueryUpdateEmitter.class)) .build(); }
@Bean( destroyMethod = "disconnect") @ConditionalOnMissingBean(QueryBus.class) public AxonServerQueryBus queryBus(AxonServerConnectionManager axonServerConnectionManager, AxonServerConfiguration axonServerConfiguration, AxonConfiguration axonConfiguration, TransactionManager txManager, @Qualifier("messageSerializer") Serializer messageSerializer, Serializer genericSerializer, QueryPriorityCalculator priorityCalculator, QueryInvocationErrorHandler queryInvocationErrorHandler) { SimpleQueryBus simpleQueryBus = SimpleQueryBus.builder() .messageMonitor(axonConfiguration.messageMonitor(QueryBus.class, "queryBus")) .transactionManager(txManager) .queryUpdateEmitter(axonConfiguration.getComponent(QueryUpdateEmitter.class)) .errorHandler(queryInvocationErrorHandler) .build(); simpleQueryBus.registerHandlerInterceptor(new CorrelationDataInterceptor<>(axonConfiguration .correlationDataProviders())); return new AxonServerQueryBus(axonServerConnectionManager, axonServerConfiguration, simpleQueryBus.queryUpdateEmitter(), simpleQueryBus, messageSerializer, genericSerializer, priorityCalculator); }
@Bean( destroyMethod = "disconnect") @ConditionalOnMissingBean(QueryBus.class) public AxonServerQueryBus queryBus(AxonServerConnectionManager axonServerConnectionManager, AxonServerConfiguration axonServerConfiguration, AxonConfiguration axonConfiguration, TransactionManager txManager, @Qualifier("messageSerializer") Serializer messageSerializer, Serializer genericSerializer, QueryPriorityCalculator priorityCalculator, QueryInvocationErrorHandler queryInvocationErrorHandler) { SimpleQueryBus simpleQueryBus = SimpleQueryBus.builder() .messageMonitor(axonConfiguration.messageMonitor(QueryBus.class, "queryBus")) .transactionManager(txManager) .queryUpdateEmitter(axonConfiguration.getComponent(QueryUpdateEmitter.class)) .errorHandler(queryInvocationErrorHandler) .build(); simpleQueryBus.registerHandlerInterceptor(new CorrelationDataInterceptor<>(axonConfiguration .correlationDataProviders())); return new AxonServerQueryBus(axonServerConnectionManager, axonServerConfiguration, simpleQueryBus.queryUpdateEmitter(), simpleQueryBus, messageSerializer, genericSerializer, priorityCalculator); }
/** * Provides the default QueryBus implementations. Subclasses may override this method to provide their own default. * * @param config The configuration based on which the component is initialized. * @return The default QueryBus to use. */ protected QueryBus defaultQueryBus(Configuration config) { return SimpleQueryBus.builder() .messageMonitor(config.messageMonitor(SimpleQueryBus.class, "queryBus")) .transactionManager(config.getComponent(TransactionManager.class, NoTransactionManager::instance)) .errorHandler(config.getComponent( QueryInvocationErrorHandler.class, () -> LoggingQueryInvocationErrorHandler.builder().build() )) .queryUpdateEmitter(config.getComponent(QueryUpdateEmitter.class)) .build(); }
@ConditionalOnBean(QueryInvocationErrorHandler.class) @ConditionalOnMissingBean(QueryBus.class) @Qualifier("localSegment") @Bean public SimpleQueryBus queryBus(AxonConfiguration axonConfiguration, TransactionManager transactionManager, QueryInvocationErrorHandler eh) { return SimpleQueryBus.builder() .messageMonitor(axonConfiguration.messageMonitor(QueryBus.class, "queryBus")) .transactionManager(transactionManager) .errorHandler(eh) .queryUpdateEmitter(axonConfiguration.getComponent(QueryUpdateEmitter.class)) .build(); }
@ConditionalOnMissingBean(value = {QueryBus.class, QueryInvocationErrorHandler.class}) @Qualifier("localSegment") @Bean public SimpleQueryBus queryBus(AxonConfiguration axonConfiguration, TransactionManager transactionManager) { return SimpleQueryBus.builder() .messageMonitor(axonConfiguration.messageMonitor(QueryBus.class, "queryBus")) .transactionManager(transactionManager) .errorHandler(axonConfiguration.getComponent( QueryInvocationErrorHandler.class, () -> LoggingQueryInvocationErrorHandler.builder().build() )) .queryUpdateEmitter(axonConfiguration.getComponent(QueryUpdateEmitter.class)) .build(); }
private QueryBus buildQueryBus(Configuration c) { SimpleQueryBus localSegment = SimpleQueryBus.builder() .transactionManager(c.getComponent(TransactionManager.class, NoTransactionManager::instance)) .errorHandler(c.getComponent(QueryInvocationErrorHandler.class, () -> LoggingQueryInvocationErrorHandler.builder().build())) .queryUpdateEmitter(c.queryUpdateEmitter()) .messageMonitor(c.messageMonitor(QueryBus.class, "localQueryBus")) .build(); AxonServerQueryBus queryBus = new AxonServerQueryBus(c.getComponent(AxonServerConnectionManager.class), c.getComponent(AxonServerConfiguration.class), c.queryUpdateEmitter(), localSegment, c.messageSerializer(), c.serializer(), c.getComponent(QueryPriorityCalculator.class, () -> new QueryPriorityCalculator() {})); c.onShutdown(queryBus::disconnect); return queryBus; }
/** * Provides the default QueryBus implementations. Subclasses may override this method to provide their own default. * * @param config The configuration based on which the component is initialized. * @return The default QueryBus to use. */ protected QueryBus defaultQueryBus(Configuration config) { return SimpleQueryBus.builder() .messageMonitor(config.messageMonitor(SimpleQueryBus.class, "queryBus")) .transactionManager(config.getComponent(TransactionManager.class, NoTransactionManager::instance)) .errorHandler(config.getComponent( QueryInvocationErrorHandler.class, () -> LoggingQueryInvocationErrorHandler.builder().build() )) .queryUpdateEmitter(config.getComponent(QueryUpdateEmitter.class)) .build(); }
@Test public void testQueryHandlerAndEventHandlerCleanlyShutdown() { UserSummaryProjection userSummaryProjection = new UserSummaryProjection(); Configurer configurer = DefaultConfigurer.defaultConfiguration(); configurer.configureCommandBus(c -> SimpleCommandBus.builder().build()) .configureQueryBus(c -> SimpleQueryBus.builder().build()) .configureEmbeddedEventStore(c -> new InMemoryEventStorageEngine()) .registerQueryHandler(c -> userSummaryProjection); configurer.eventProcessing() .registerEventHandler(c -> userSummaryProjection); Configuration configuration = configurer.buildConfiguration(); configuration.start(); configuration.shutdown(); }
private QueryBus buildQueryBus(Configuration c) { SimpleQueryBus localSegment = SimpleQueryBus.builder() .transactionManager(c.getComponent(TransactionManager.class, NoTransactionManager::instance)) .errorHandler(c.getComponent(QueryInvocationErrorHandler.class, () -> LoggingQueryInvocationErrorHandler.builder().build())) .queryUpdateEmitter(c.queryUpdateEmitter()) .messageMonitor(c.messageMonitor(QueryBus.class, "localQueryBus")) .build(); AxonServerQueryBus queryBus = new AxonServerQueryBus(c.getComponent(AxonServerConnectionManager.class), c.getComponent(AxonServerConfiguration.class), c.queryUpdateEmitter(), localSegment, c.messageSerializer(), c.serializer(), c.getComponent(QueryPriorityCalculator.class, () -> new QueryPriorityCalculator() {})); c.onShutdown(queryBus::disconnect); return queryBus; }