2017-04-18 7 views
0

こんにちは、私はCamelの新機能で、JMSキューに関する設計上の問題があります。Camel JMS Queueポーリングとデータ回復

私は一連のデータを受け取りました。これらのデータには基準日があります。これらのデータは、15分ごとにバッチプロセスによって送信されます。

私は受け取ったデータを処理して別のルートに転送する必要があります。

特定のデータを処理できない場合は、再処理する必要があります。そして、次のデータセットが処理される前に処理されるようにする必要があります。

私は処理の前にこれらのデータを受け取るJMSルートを作成することを考えていました。その後、それを処理します。その後、別のキューに送信します。

FTP - >プロセスデータ行(A) - > JMSキュー - >プロセッサ(B) - >ダイレクト:プロセッサBは、私は、データが次の前に処理したい失敗した場合

を呼び出しますデータセットはFTPによって送信されます。 (2番目のデータセットには最初のデータセットのデータの更新が含まれている可能性があります)

したがって、キューを使用して、受信した順序で常に処理されることを確認していました。

しかし、Camelを使用していないJMSの経験では、オブジェクトがキューから消費されると、キューにはそれ以上存在しなくなります。 それもキャメルのケースですか? この場合、データの処理を再試行するか、キューに戻す必要がありますか?

この「復旧」の部分は私には分かりません。これをサポートするパターンを理解したいと思います。あなたの助けのための

感謝

ジル

答えて

0

この部分「オブジェクトは、それはもうキューにないキューから消費されると。」完全に正確ではありません。実際には、キューに登録してメッセージを取得するときには、そのメッセージを処理して肯定応答をJMSブローカに返す必要があります。確認応答が成功すると、メッセージはキューから削除されます。しかし、確認応答がうまくいかない場合、またはプロセスが停止してブローカへの接続が切断された場合、メッセージはキューから削除されずに別のコンシューマに渡されます。

多くの場合、JMSライブラリのほとんどは、メッセージがコンシューマによって受信されたときに確認応答が送信されたときにモードを使用していますが、このモードを変更し、処理部分が正常に終了すると手動で確認応答を送信する可能性があります。承認は、あなたの中に「から」右対応付けられた後に送信されます -

  • AUTO_ACKNOWLEDGE(デフォルト):ラクダのJMS(http://camel.apache.org/jms.html)についてどのようなあなたのようないくつかの異なる可能な値を持っているエンドポイントのオプション「acknowledgementModeName」を使用することができ

    route

  • CLIENT_ACKNOWLEDGE - 承認を送信するタイミングをアプリケーションが制御できるようにします。また、交換処理中に例外がスローされない場合、メッセージは承認され、キューから削除されます。
関連する問題