Я хочу подключиться к Spring Boot Rabbit MQ, чтобы получать сообщения при некоторых условиях. Я видел такой пример (https://spring.io/guides/gs/messaging-rabbitmq/), но проблема использования этого подхода заключается в том, что, как только сервер подойдет, будет установлено соединение с очередью, чего я хочу избежать, и я хочу только подключиться к очереди при некотором условии
Теперь, чтобы решить мой сценарий использования - подключиться к очереди кролика mq при некотором условии, я написал следующий код:
public void connectQueueAndProcessWhenTrue(){
Connection con = rabbitTemplate.getConnectionFactory().createConnection();
try{
Channel channel = con.createChannel(false);
channel.exchangeDeclare("x", BuiltInExchangeType.TOPIC, true);
channel.queueDeclare("y");
channel.queueBind("y","x","#.TEST.#");
DeliveryCallback callback = (consumerTag, deliver) -> {
System.out.println(new String(deliver.getBody(), StandardCharSets.UTF_8));
}
channel.basicConsume("y",callback,consumerTag->{} )
}catch(Exception err){
log.error(err);
}
}
Выше функция вызывается, когда условие выполняется, и я хочу подключиться и обработать из очереди. Вышеупомянутый код работает, но проблема в том, что я получаю исключение MissedHeartBeatException со значением hearbeat = 60 секунд и ниже, код не может переподключиться и обработать, и мне нужно каждый раз отказов сервера.
Может ли кто-нибудь дать мне фрагмент кода, как я могу восстановить соединение в случае вышеупомянутого исключения, не перезагружая сервер?