使用Spring DSL我有以下路線定義:配置Apache駱駝死信處理程序
<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異常),但不知道如何包裝/捕獲它並繼續處理。我想認爲,假設上面的設置ErrorCatcher
,拋出的MySQL異常將被處理,並且該路由將繼續處理。相反,我從來沒有在應用程序日誌中看到在引發這些Smooks/MySQL異常時執行ErrorCatcher#handle
方法的證據。
我在這裏配置了不正確的東西嗎?還有什麼我可以做的(通過Smooks處理器的URI配置或其他),以防止從該處理器中拋出的異常掛起整個應用程序?提前致謝!
您使用的是哪種駱駝版本?在上設置錯誤處理程序沒有按預期工作時,我們有一次錯誤。但是在上設置它會起作用。 –