Очередь недоступна, но в процессоре верблюда нет исключений - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть процессор в верблюде, который отправляет сообщение конечной точке верблюда (apache camel).

У меня есть конечная точка в верблюжьем XML-файле:

<endpoint id="sendQueue" uri="FBActiveMQ:queue:SEND_Q" />

Я удалил очередь sendQueue из администратора очередей (используя IBM MQ) и попытался отправить сообщение от процессора в эту очередь, перехватить исключение и обработать его в самом процессоре.

Дело в том, что я никогда не получаю исключения, когда сообщение отправляется в удаленную очередь.

Мне известно, что у меня может быть обработчик исключений в самом файле верблюда, но я не могу этого сделать, потому что мой процессор выполняет транзакцию внутри границы транзакции и нуждается в откате в случае сбоя очереди.

У вас есть какие-нибудь подсказки, пожалуйста?

Код, который написан так (не точный код).

    try{
            JmsProducer jmsProducer =  new JmsProducer(endPoint);
            jmsProducer.start();
            Exchange exchange = endPoint.createExchange(ExchangePattern.InOnly);
            exchange.getIn().setBody(msg);
            jmsProducer.process(exchange);
        } catch(Exception e){
           e.printStackTrace();

        }

1 Ответ

0 голосов
/ 18 ноября 2018

Вы пытались проверить объект exchange после вызова процесса в вашем блоке try, чтобы выяснить, есть ли в нем исключение.

jmsProducer.process(exchange);
if (exchange.getException() != null) {
    exchange.getException().printStackTrace();;
}

Я думаю, вы получите только исключение, если это что-тонеправильно с вашим jmsProducer (например, без camelContext).

... удален бит об опечатке Exchange / Exception в оригинальном примере ...

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