Изящное отключение / остановка RabbitMQ Consumer с Spring Cloud - PullRequest
0 голосов
/ 16 января 2020

Отредактированный вопрос

У меня есть приложение с загрузочной пружиной, работающее Spring Boot 2.1 и Spring Cloud Finley.M2. Приложение интегрировано с RabbitMQ и принимает к нему сообщения, отправленные другими службами. Интеграция с RabbitMQ была достигнута с использованием абстракций @StreamLinster и @EnableBinding Spring Cloud, как показано ниже:

@EnableBinding(CustomChannels.class)
public class IncomingChannelHandler {

@StreamListener("inboundChannel")
public void handleIncoming(String incoming) {
    final IncomingActionDTO dto = gson.fromJson(incoming, IncomingActionDTO.class);

    handleIncoming(dto);

  }
}

Моя цель - иметь возможность программно прекратить работу и стать потребителем очереди rabbitMQ.

Я попробовал решение с RabbitListenerEndpointRegistry, но результат оказался не тем, что мне был нужен, потому что остановка удержала меня как потребителя в очереди. Я также пытался остановить его через жизненный цикл, который тоже не работал.

Есть ли способ сообщить очереди, чтобы она перестала считать вас потребителем, пока приложение снова не зарегистрируется как единое целое?

...