0

ビジネスの状況では、アプリケーションで特定のイベントが発生したときに、アプリケーションから第三者に時々通知し、データを送信する必要があります。私たちはパブリッシャーであり、サードパーティはサブスクライバーであると言えます。

ソープ メッセージを通知として期待するソープ サービスがある場合、そのサービスと通信するためのベスト プラクティスの方法は何ですか? アプリの速度を落として通知したくないので、非同期にしたいと思います。また、配信が保証されている必要があり、サービスがダウンしている場合は再試行します。

読んだところ、activeMQ を使用できるように見えますが、MQ に接続できる JMS 宛先が必要ではないでしょうか?

私が理想として望むのは、私に代わって SOAP リクエストを送信し、正常な応答が得られるまで再試行する透過的なメッセージ ブローカーのようなものです。そのようなものは存在しますか?それはこのシナリオにとって賢明なアーキテクチャの選択ですか?

どうもありがとう!

4

1 に答える 1

1

SOAP は要求/応答プロトコルです。基礎となるトランスポートは非​​同期である可能性がありますが、これは通常、同期しているように見えるクライアントから隠されています。

この種の通知を処理する最善の方法は、純粋に JMS/MQ を使用することです。ただし、これは、クライアントがキューからメッセージを消費できるように、クライアントを制御できるか、クライアントを変更する必要があることを前提としています。

そうでない場合でも、キューを使用することをお勧めします。

通知はキューに投稿する必要があります。プロセスまたはスレッドは、そのキューからの通知を消費し、その呼び出しが失敗した場合に通知を再キューイングする適切な再試行ロジックを使用して SOAP 呼び出しを行う必要があります。要件に応じて、これはインメモリ キューのように単純な場合もあれば、プロセスの再起動後も通知を保持する必要がある場合は、ActiveMQ などの外部キュー サーバーを使用する場合もあります。

いずれにしてもパターンは同じです:

  • 通知をキューに入れます
  • 別のスレッドまたは別のプロセスのコンシューマーが通知を消費し、SOAP 呼び出しを行う
  • SOAP 呼び出しが失敗した場合は、通知を再キューイングします
于 2013-05-02T09:54:10.903 に答える