Как перенаправить ошибку на маршрут в Apache Camel - PullRequest
1 голос
/ 09 февраля 2012

Пример моего верблюжьего контекста.

<camel:camelContext>
    <camel:route id="r1">
      <camel:from="someEndpoint"/>
        ...
      <camel:to="to2"/>
    </camel:route>
    <camel:route id="r2">
      <camel:from="to2"/>
        ...
      <camel:to="to3"/>
    </camel:route>
    <camel:route id="r3">
      <camel:from="to3"/>
        ...
      <camel:to="to4"/>
    </camel:route>
    <camel:route id="r4">
      <camel:from="to4"/>
        ...
      <camel:to="exit"/>
    </camel:route>

    <camel:route id="errorProcessorRoute">
      <camel:from="???"/>
        ...Some action...
      <camel:to="exit"/>
    </camel:route>
</camel:camelContext>

Мне нужно, если возникнет какая-либо ошибка, чем прохождение маршрута -> errorProcessorRoute.

Как это реализовать?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Если вы хотите отследить любую ошибку, вы можете использовать тег onException

<camel:camelContext>
   ....

   <camel:route id="errorProcessorRoute">
      <camel:from="direct:foo"/>
      ...Some action...
      <camel:to="exit"/>
   </camel:route>

   <onException>
      <exception>java.lang.Exception</exception>
      <to uri="direct:foo"/>
   </onException>

 </camel:camelContext>
1 голос
/ 09 февраля 2012
<camel:errorHandler id="deadLetterErrorHandler" type="DeadLetterChannel" deadLetterUri="log:dead">
    <camel:redeliveryPolicy maximumRedeliveries="2" redeliveryDelay="1000" logHandled="true" asyncDelayedRedelivery="true"/>
</camel:errorHandler>

С здесь .

...