2017-04-20 1 views
0

を再試行してください。実行時に何が起こっているかをよりよく理解するために、データベース内の実行状態(リトライ回数、最終実行状態など)も保持します。私は例外ハンドラからの再配信メカニズムを使用したいと思いますが、データベースレコードを更新するたびに何らかの処理を実行します。Aapche-キャメルは、それぞれのエラー情報を保存し、私はキューからメッセージを処理するApacheのキャメルのルートを持っている

from("jms:myinputqueue") 
    .onException(RetriableException.class) 
     .maximumRedeliveries(5) 
     .maximumRedeliveryDelay(10000) 
     .useOriginalMessage() 
     .to("log:store error information in database about each attempt") // (1) 
     .end() // onException 
    .to("log:apply business logic here which can throw exceptions") 
; 

(1)は、すべての再試行が尽きた後にのみ実行されるため、1回だけ実行されます。

私はApache Camel- Message Redelivery happens before onexception block executesを読むが、提案された解決策「」onRedelivery「」新しい再試行の開始前に実行されました。私は最後の状態(エラーメッセージ)をデータベースに保存できるように、各失敗時に結果を保存する必要があります。

提案がありますか?

答えて

0

あなたは例外が起こったときにそれが呼ばれて使用することができますonExceptionOccurredプロセッサがあります。

キャメル2.17以降に含まれています:https://issues.apache.org/jira/browse/CAMEL-9069

+1

ちょうど私が必要なもの。この機会に感謝します。私はCamelをいくつかのプロジェクトに統合しました。いつも大きな成功を収めています。あなたがそれを(何年も前から)入れて、人々を助けるための時間を見つけてくれたことに感謝します。 – Conffusion

関連する問題