2

ActiveMQの公式ページでそれがどのように機能するかを読みましたが、要求と応答がどのように行われているのかシナリオ全体を理解できませんでした。今の私の理解によると、amq.jsを使用してサーバー上にservletがあり、クライアントとしてJavaScriptがある場合、

  1. JavaScriptはポーリングリクエストをサーバーに送信します。
  2. サーバーはスレッドを開始し、応答として送信されるデータをチェックします。
  3. その時点でデータが利用できない場合、サーバーはデータが存在するまで待機します。
  4. サーバーは利用可能なときにデータを送信し、その後接続が切断されます。
  5. クライアントはデータを受信し、再度ポーリング要求を送信します。

このようにして、データが受信されるまで、クライアント要求はサーバーに保留されます。

この理解は正しく、可能ですか?はいの場合、リクエストはどのようにサーバーにパークされますか?

ありがとう。

4

1 に答える 1

3

はい、あなたはそれを正しく理解しています。ただし、リクエストは30秒間保留されるという制限があり、その後タイムアウトになります(デフォルト)。

JettyはActiveMQのサーブレットコンテナであるため、リクエストはJettyContinuationsを使用してサーバーにパークされます

Java側のActiveMQは非同期リスナーを使用してセットアップできるため、ポーリング全体でスレッドをブロックする必要はありません。

于 2013-01-17T10:07:52.443 に答える