Установить другое исключение при обмене у процессора - PullRequest
1 голос
/ 20 июля 2011

У меня есть такой маршрут:

onException(classOf[RuntimeException]).process(runtimeProcessor).process(doSmth).log(LoggingLevel.INFO, "new", "${exchangeId} --- ${exception.stacktrace} ") 

На процессоре я делаю:

 CustomException customException =new CustomException () 
    exchange.setException(customException ) 
    exchange.getOut.setBody(doc)

Проблема теперь в том, что после этого процессора он не идет на другие процессоры(т. е. в моем случае это не относится к процессору «doSmth»)

Я предполагаю, что такое поведение заключается в том, что я изменил исключение на обмене, в котором я построил свое «onException» поверх него.

Есть ли способ заставить идти по моему маршруту даже после изменения исключения Exchange !!

1 Ответ

1 голос
/ 21 июля 2011

Я пытался обернуть перехваченное исключение, которое входит в обмен, и обернуть его в другое пользовательское исключение.

После этой упаковки мне нужно установить это исключение в пользовательском обмене. Позже я узнал от @Claus Ibsen-2 на верблюжьем форуме, что Camel не будет продолжать. маршрутизация, когда я использую

exchange.setException(ex)

Мне удалось немного обойтись, выполнив следующие действия: @ 1006 *

exchange.getOut.setHeader("ex",customException) 

затем @Route:

this.onException(classOf[IOException]).process(doSmth).log(LoggingLevel.INFO, "new", ${in.header.ex} ") 

Он печатает в моем журнале следующее и то, что мне нужно с самого начала CustomException: java.lang.IOException

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