0

java プログラムを理解したいのですが、jms spring フレームワークを使用して開発されたものを変更する必要があります。通常、JMS レシーバーとセンダーがあり、リクエスト キューからメッセージを受信し、ジョブが完了するとジョブ (別の Java プログラム) を呼び出します。ジョブが完了すると、センダーはレスポンスをレスポンス キューに送信します。以下の質問がいくつかあります。

  1. 応答が応答キューに正常にポストされるまで、要求メッセージは削除されません。それがどのように達成されたか、その背後にあるロジックは何ですか。
  2. 送信者がメッセージの送信に失敗した場合 (JMS 例外をキャッチして)、応答をフラット ファイルに書き込む機能を作成したいと考えています。送信者キューが起動して実行されると、フラット ファイルが読み取られ、応答が送信されます。私が必要とする理由は、ジョブが失敗した場合、ジョブ処理に数時間かかる可能性があり、入力メッセージが受信者によって再度読み取られるためです。重複処理を避けたい。ここであなたのアイデアを提案してください。
4

1 に答える 1

0

構成を見ずにこれらの質問に答えることは困難ですが、一番の理由は、アプリがトランザクション セッションを使用しているからだと推測できます。これは、トランザクションがコミットされるまで、そのセッションのすべての更新が完了しないことを意味します。

例外をキャッチしてデータを書き込むだけです。トランザクションがコミットされる限り (例外をキャッチしたため)、入力メッセージは削除されます。

于 2013-03-02T15:38:47.987 に答える