DeadLetterChannel
だから、私はコンテキストレベルで再配信のないラクダのコンテキストを持っています。コンテキスト内に私はルートを持っています:
from("direct:input")
.routeId("enrichHeader")
.setHeader("myHeader").constant("someValue)
.to("direct:output");
ユニットテストがinterceptSendToEndpoint("direct:output")
あり、例外がスローされます。
次に、単体テストで行いますproducerTemplate.sendBody(theBody)
。
これで、上記の例外で構成されたように、メッセージはデッドレターチャネルに送信されます。すべて順調です。ただし、設定するloggingErrorHandler
と奇妙な動作になります。したがって、上記のルートを次のように更新すると、次のようになります。
from("direct:input")
.routeId("enrichHeader")
.errorHandler(
loggingErrorHandler("com.myco.myproject")
.level(LoggingLevel.WARN))
.setHeader("myHeader").constant("someValue)
.to("direct:output");
テストを実行すると、2つの予期しない動作が発生します。ERROR
まず、例外は構成済みではなくレベルでログに記録されますWARN
。次に、例外が呼び出しに伝播されproducerTemplate.sendBody(theBody)
ます。
一方では、でのロギングERROR
は明らかに奇妙です。奇妙に思われる他の部分は、ハンドラーが例外を伝播していることです。私はそれが処理済みとしてマークされ、それで完了したと思っていたでしょう。
これは予想される動作ですか?のドキュメントLoggingErrorHandler
が不足しているようです。