2017-11-24 14 views
0

私は着信要求を検証して処理するCamel restエンドポイント(Jetty)を持っています。特定の例外ハンドラ(onException)の他に、3回リトライするように設定されたDLQエラーハンドラ(errorHandler(deadLetterChannel ...))を使用します。失敗した場合は、メッセージがDLQに移動されます。Camel errorHandler/deadLetterChannel REST応答

私の質問は、予期しないExceptionが完全なExceptionボディではなく発生した場合でも、ユーザーフレンドリなエラーメッセージをクライアントに返す方法です。 errorHandlerに欠けている設定がありますか? 私はラクダユニットテスト(DeadLetterChannelHandledExampleTest)とアクション2(11章)のラクダについていくつかの例を見つけようとしましたが、このシナリオの具体的な例はありませんでした。

コードは次のとおりです。

.from(ROUTE_URI) .errorHandler(deadLetterChannel("{{activemq.webhook.dlq.queue}}") .onPrepareFailure(new FailureProcessor()) .maximumRedeliveries(3) .redeliveryDelay(1000)) .bean(ParcelProcessor.class, "process");

はあなたの助けをありがとう!

答えて

0

2番目のルートをDLQとして使用します(例:direct:dead)。次に、実際のDLQにメッセージを送信してから、メッセージ変換を行ってフレンドリーな応答を返します。

errorHandler(deadLetterChannel("direct:dead") 

from("direct:dead") 
    .to("{{activemq.webhook.dlq.queue}}") 
    .transform(constant("Sorry something was wrong")); 
+0

は魅力的です!ありがとうクラウス – eistropfen