camel コンテキストのすべてのルートによってスローされたすべての例外の例外ハンドラーを構成しようとしています。私のアプローチは次のとおりですが、運はありません。
- デフォルトのキャメル コンテキストをインスタンス化する
- スプリング コンテキストから RouteDefinition のリストを取得する
- ctx.addRouteDefinitions() を呼び出して、これらの定義をキャメル コンテキストに追加します。
- RotueBuilder (ctx.addRoutes(new MyErrorHandlerRouteBuilder())) で定義された Java DSL から例外ハンドラ ルートを追加します。
- キャメル コンテキストを開始する
この時点で、春に定義されたルート内でスローされた例外は、定義しようとしているものではなく、DefaultErrorHandler によって処理されます。私のエラー処理ルート定義は次のようになります
public class MyErrorHandlerRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
onException(Exception.class)
.routeId("errorHandlerRoute")
.handled(true)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Throwable caused = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
// do some custom processing of the exception
}
})
.stop();
}
他に何を試すことができますか、またはどこが間違っていますか?