Проблема (MissedHeartBeatException) с Spring Boot Rabbit MQ Consumer, который при некоторых условиях подключается к очереди - PullRequest
0 голосов
/ 16 апреля 2020

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

Может ли кто-нибудь дать мне фрагмент кода, как я могу восстановить соединение в случае вышеупомянутого исключения, не перезагружая сервер?

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