Apache Camel(Camel 2.10.3、Java DSLベース)を使用して統合プロジェクトを構築しています。Apache Camelで破損/回復したJMS接続を検出するにはどうすればよいですか?
データベースからデータを抽出する(IN_DBと呼ぶ)、あるロジックを実行して別のデータベース(OUT_DB)に1日に1回挿入するルート、およびXMLデータのJMSトピックにサブスクライブする別のルートいくつかのロジックを作成し、それを同じデータベース(OUT_DB)に1日を通して挿入します。
JMSトピック接続が何らかの理由でダウンした場合、私たちは無期限に再接続しようとします。再接続が成功したら、データベース(IN_DB)に戻り、トピックがダウンしていたギャップ。
私の質問は、キャメルでこのロジック(「私は接続されていて、もう接続されました)」をどうすればいいのですか?トピックがダウンしたときにトピック消費者から始まるルートはどうなりますか?ルートは停止しますか?または、エラー・キューにエラー・メッセージを出しますか?トピックの接続を監視するために私自身のハンドラを書く必要がありますか、またはトピックがバックアップされ、メッセージヘッダーを設定したときにCamelが自動的に再接続するか、コンテキスト変数を設定して、私は再び接続されました 'シナリオが起こった?私はデータベースロードを呼び出すことについてルートロジックを構築するのはうれしいです。私はこのシナリオが起こったことをCamelで '検出'する最良の方法を理解できません。
ご迷惑をおかけして申し訳ございません。
Mattさん、ありがとうございました。残念ながら、私たちは購読しているトピック(Tibco EMSブローカー)を所有しておらず、読み込み専用のアカウントに接続していますので、ハートビートのアプローチが少し難解です。 JMS例外はどこからスローされますか? JMSComponent自体、またはそこから消費されるルート? – Matt
オプションのためにちょっと固まっているようですね!私は手を挙げることはできませんが、例外リスナーは接続に登録されているので、ルートのどこかからではなく接続によって例外がスローされるべきです。あなたの唯一の他の選択肢は、あなたが知らないメッセージがあるかどうかを定期的にIN_DBに問い合わせることですが、実用的ではないと思われます。 –