103.28. consumer.bridgeErrorHandler の使用
Camel 2.10 以降で利用可能
Camel エラーハンドラーを使用してファイルコンシューマーで発生した例外を処理する場合は、以下に示すように consumer.bridgeErrorHandler
オプションを有効にできます。
// to handle any IOException being thrown onException(IOException.class) .handled(true) .log("IOException occurred due: ${exception.message}") .transform().simple("Error ${exception.message}") .to("mock:error"); // this is the file route that pickup files, notice how we bridge the consumer to use the Camel routing error handler // the exclusiveReadLockStrategy is only configured because this is from an unit test, so we use that to simulate exceptions from("file:target/nospace?consumer.bridgeErrorHandler=true") .convertBodyTo(String.class) .to("mock:result");
// to handle any IOException being thrown
onException(IOException.class)
.handled(true)
.log("IOException occurred due: ${exception.message}")
.transform().simple("Error ${exception.message}")
.to("mock:error");
// this is the file route that pickup files, notice how we bridge the consumer to use the Camel routing error handler
// the exclusiveReadLockStrategy is only configured because this is from an unit test, so we use that to simulate exceptions
from("file:target/nospace?consumer.bridgeErrorHandler=true")
.convertBodyTo(String.class)
.to("mock:result");
したがって、このオプションを有効にするだけで、ルート内のエラーハンドラーがそこから取得します。
重要
consumer.bridgeErrorHandler を使用する場合の重要事項 consumer.bridgeErrorHandler を使用する場合、インターセプター、OnCompletions は適用さ れません。Exchange は Camel エラーハンドラーによって直接処理され、インターセプターや onCompletion などの前のアクションがアクションを実行することを許可しません。