Я следующий маршрут определяется с помощью Spring DSL:Настройка Apache Camel Dead Letter Handler
<camelContext id="myapp-camel-ctx" errorHandlerRef="deadLetterErrorHandler"
xmlns="http://camel.apache.org/schema/spring">
<route id="myapp-camel-route">
<from uri="timer://runOnce?repeatCount=1&delay=10" />
<to uri="bean:fizzBean?method=doFizz" />
<!-- What I call the "Smooks processor" -->
<to uri="smooks://my-smooks-config.xml" />
<to uri="bean:buzzBean?method=doBuzz" />
</route>
</camelContext>
<bean id="deadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
<property name="deadLetterUri" value="bean:errorCatcher" />
</bean>
<bean id="errorCatcher" class="com.me.myorg.myapp.ErrorCatcher">
<property name="foo" value="BAR" />
</bean>
Иногда, в зависимости от выхода (исходящее сообщение) в fizzBean
, процессор Smooks бросает исключение, и вешает цельные заявление. Когда он это делает, я вижу, что исключение выбрано в журналах приложений (это фактически исключение MySQL), но не уверен, как его обернуть/уловить и продолжить обработку. I подумал, что, учитывая установленную выше настройку ErrorCatcher
, будет обработано брошенное исключение MySQL и что маршрут продолжит обработку. Вместо этого я никогда не вижу доказательств в моих журналах приложений, что метод ErrorCatcher#handle
выполняется, когда выбрасываются эти исключения Smooks/MySQL.
Я что-то неправильно настроил здесь? Могу ли я что-нибудь сделать (либо с помощью конфигураций URI процессора Smooks, либо с помощью чего-то еще), чтобы исключить исключения изнутри этого процессора из висящего всего приложения? Заранее спасибо!
Какую версию верблюда вы используете? У нас была ошибка, когда установка обработчика ошибок в не работала должным образом. Но настройка его на будет работать. –