java rabbitmq с веткой Executor, созданные темы продолжают работать. как убедиться, что темы убиты? - PullRequest
0 голосов
/ 24 января 2020

Я использую 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"]

Потоки создаются как много запросов, которые я получаю в приемнике, и никогда не выключаются.

Как избежать этого условия или лучше полностью удалить многопоточную концепцию ??

заранее спасибо

1 Ответ

0 голосов
/ 24 января 2020

Во-первых, вы не должны использовать исполнителя в вашем слушателе, иначе вы рискуете потерять сообщение.

Увеличьте контейнер concurrentConsumers, и среда будет управлять параллелизмом для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...