@Test public void simpleApplicationEventMulticasterWithTaskExecutor() { @SuppressWarnings("unchecked") ApplicationListener<ApplicationEvent> listener = mock(ApplicationListener.class); ApplicationEvent evt = new ContextClosedEvent(new StaticApplicationContext()); SimpleApplicationEventMulticaster smc = new SimpleApplicationEventMulticaster(); smc.setTaskExecutor(new Executor() { @Override public void execute(Runnable command) { command.run(); command.run(); } }); smc.addApplicationListener(listener); smc.multicastEvent(evt); verify(listener, times(2)).onApplicationEvent(evt); }
/** * Server internal event publisher that allows parallel event processing if * the event listener is marked as so. * * @return publisher bean */ @Bean(name = AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME) ApplicationEventMulticaster applicationEventMulticaster(@Qualifier("asyncExecutor") final Executor executor, final TenantAware tenantAware) { final SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new TenantAwareApplicationEventPublisher( tenantAware, applicationEventFilter()); simpleApplicationEventMulticaster.setTaskExecutor(executor); return simpleApplicationEventMulticaster; }
@Bean(name = AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME) SimpleApplicationEventMulticaster applicationEventMulticaster(final ApplicationEventFilter applicationEventFilter) { final SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new FilterEnabledApplicationEventPublisher( applicationEventFilter); simpleApplicationEventMulticaster.setTaskExecutor(asyncExecutor()); return simpleApplicationEventMulticaster; }
@Bean(name = AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME) SimpleApplicationEventMulticaster applicationEventMulticaster(final ApplicationEventFilter applicationEventFilter) { final SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new FilterEnabledApplicationEventPublisher( applicationEventFilter); simpleApplicationEventMulticaster.setTaskExecutor(asyncExecutor()); return simpleApplicationEventMulticaster; }
@Bean(name = "applicationEventMulticaster") public ApplicationEventMulticaster simpleApplicationEventMulticaster() { SimpleApplicationEventMulticaster eventMulticaster = new SimpleApplicationEventMulticaster(); eventMulticaster.setTaskExecutor(new SimpleAsyncTaskExecutor()); return eventMulticaster; } }
/** * Server internal event publisher that allows parallel event processing if * the event listener is marked as so. * * @return publisher bean */ @Bean(name = AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME) public ApplicationEventMulticaster applicationEventMulticaster() { final SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new TenantAwareApplicationEventPublisher( tenantAware, applicationEventFilter()); simpleApplicationEventMulticaster.setTaskExecutor(executor); return simpleApplicationEventMulticaster; }
/** * A multicast event publisher to replace the default one used by Spring via the ApplicationContext. * * @param syncTaskExecutor The synchronous task executor to use * @param asyncTaskExecutor The asynchronous task executor to use * @return The application event multicaster to use */ @Bean public GenieEventBusImpl applicationEventMulticaster( @Qualifier("genieSyncTaskExecutor") final SyncTaskExecutor syncTaskExecutor, @Qualifier("genieAsyncTaskExecutor") final AsyncTaskExecutor asyncTaskExecutor ) { final SimpleApplicationEventMulticaster syncMulticaster = new SimpleApplicationEventMulticaster(); syncMulticaster.setTaskExecutor(syncTaskExecutor); final SimpleApplicationEventMulticaster asyncMulticaster = new SimpleApplicationEventMulticaster(); asyncMulticaster.setTaskExecutor(asyncTaskExecutor); return new GenieEventBusImpl(syncMulticaster, asyncMulticaster); } }
@Bean public ApplicationEventMulticaster applicationEventMulticaster(@Qualifier("applicationEventTaskExecutor") ThreadPoolTaskExecutor taskExecutor) { // TODO rz - Add error handlers SimpleApplicationEventMulticaster async = new SimpleApplicationEventMulticaster(); async.setTaskExecutor(taskExecutor); SimpleApplicationEventMulticaster sync = new SimpleApplicationEventMulticaster(); return new DelegatingApplicationEventMulticaster(sync, async); }
private ApplicationEventMulticaster createApplicationEventMultiCaster(final String name) { final SimpleApplicationEventMulticaster result = new SimpleApplicationEventMulticaster(); final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(metacatProperties.getEvent().getBus().getExecutor().getThread().getCount()); executor.initialize(); RegistryUtil.registerThreadPool(registry, "metacat.event.pool." + name, executor.getThreadPoolExecutor()); result.setTaskExecutor(executor); return result; }
private ApplicationEventMulticaster createApplicationEventMultiCaster(final String name) { final SimpleApplicationEventMulticaster result = new SimpleApplicationEventMulticaster(); final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(metacatProperties.getEvent().getBus().getExecutor().getThread().getCount()); executor.initialize(); RegistryUtil.registerThreadPool(registry, "metacat.event.pool." + name, executor.getThreadPoolExecutor()); result.setTaskExecutor(executor); return result; }