Я использую веб-сокет весенней загрузки для создания брокера сообщений в памяти. Я хочу иметь контроль над созданными потоками, поэтому я определил свои пулы потоков:
@Bean(name = "myTaskExecutor", destroyMethod = "shutdown")
public ThreadPoolTaskExecutor myTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(1);
executor.setMaxPoolSize(4);
executor.setThreadNamePrefix("myTaskExecutor-");
executor.initialize();
return executor;
}
@Bean(name = "myTaskScheduler", destroyMethod = "shutdown")
public TaskScheduler myTaskScheduler() {
ThreadPoolTaskScheduler executor= new ThreadPoolTaskScheduler();
executor.setPoolSize(4);
executor.setThreadNamePrefix("myTaskScheduler-");
executor.initialize();
return ex;
}
Затем я установил их:
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.taskExecutor(myTaskExecutor);
}
@Override
public void configureClientOutboundChannel(ChannelRegistration registration) {
registration.taskExecutor(myTaskExecutor);
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker(DESTINATIONS)
.setTaskScheduler(myTaskScheduler).setHeartbeatValue(HEARTBEAT_CONF);
}
Проблема в том, что кажется, что уничтожение называется множественным time, а также пулы по умолчанию:
Завершение работы ExecutorService 'brokerChannelExecutor'
Завершение работы ExecutorService 'messageBrokerTaskScheduler'
Завершение работы ExecutorService 'clientOutboundChannelExecutor'
Завершение работы ExecutorService 'clientOutboundChannelExecutor'
Завершение работы ExecutorService 'clientOute 1027 *
Завершение работы ExecutorService 'clientOutboundChannelExecutor'
Завершение работы ExecutorService 'myTaskScheduler'
Завершение работы ExecutorScheduler 'myTaskorScheduler' myTaskorScheduler
Почему?