Отредактированный вопрос
У меня есть приложение с загрузочной пружиной, работающее 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
, но результат оказался не тем, что мне был нужен, потому что остановка удержала меня как потребителя в очереди. Я также пытался остановить его через жизненный цикл, который тоже не работал.
Есть ли способ сообщить очереди, чтобы она перестала считать вас потребителем, пока приложение снова не зарегистрируется как единое целое?