Я использую Rabbitmq приемник. он получает несколько запросов одновременно, поэтому я создаю потоки для одновременной обработки нескольких запросов.
Проблема в том, что я создаю newSingleThreadExecutor или newFixedThreadPool, они остаются запущенными executor.shutdown (); или executor.shutdownNow (); не будет закрывать темы ниже - образец
public void receiver(String message) {
ExecutorService executor = Executors.newFixedThreadPool(10);
:
executor.execute(c);
:
executor.shutdown();
try {
executor.awaitTermination(30, TimeUnit.NANOSECONDS);
executor.shutdownNow();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
ниже - моя конфигурация rabbitmq
@Bean
SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(listenerAdapter);
return container;
}
@Bean
MessageListenerAdapter listenerAdapter(receiver recv) {
return new MessageListenerAdapter(recv, "receiver");
}
, а темы остаются в виде Тема [pool-1-thread- "number"]
Потоки создаются как много запросов, которые я получаю в приемнике, и никогда не выключаются.
Как избежать этого условия или лучше полностью удалить многопоточную концепцию ??
заранее спасибо