0

シナリオ:

  1. JMS キュー内の多数のメッセージ
  2. MDB はそれらをリモート HTTP サーバーに配信します
  3. リモートサーバーがダウンしている可能性があります
  4. サーバー全体を詰まらせない再試行メカニズムが必要です。
  5. 再配信は、1 時間ごとに数日間実行されます。

私の考えは、新しいメッセージが JMS キューに到着したときに MDB が一度に再配信を試みるようにすることですが、これを 1 分ごとに 5 回に制限することです。次に、メッセージは JMS キューから削除され、データベースに入れられます。別の (@Scheduled) EJB は、未送信のメッセージを 1 時間ごとに DB から取得し、独自のスレッドで送信します。

これを行う簡単な方法はありますか?

4

1 に答える 1

1

はい、ありますが、使用するJMSプロバイダーによって異なります。残念ながら、現時点では、JMS APIで遅延メッセージはサポートされていません。これは、間違いなく問題の最も洗練されたソリューションです。ただし、次のJMSプロバイダーの一部を使用している場合:Oracle AQ、JBoss、OpenJMS、ActiveMQ。通話による遅延メッセージのサポートが組み込まれています。

msg.setLongProperty("SOME-PROVIDER-SPECIFIC-PARAMETER, delay);

参照:

于 2013-02-16T13:15:56.670 に答える