次の方法で共有


サーバー送信イベントの API を構成する

適用対象: 開発者 | Basic | Basic v2 | Standard | Standard v2 | Premium

この記事では、API Management でサーバー送信イベント (SSE) を実装する API を構成するためのガイドラインを示します。 SSE は、クライアントが接続を確立した後、HTTP を介してクライアントにデータを自動的にストリーミング (プッシュ) するための HTML5 EventSource 標準に基づいています。

ヒント

API Management では、クライアントとサーバー間で 1 つの持続的な双方向接続を維持する WebSocket API もネイティブでサポートされています。

前提条件

SSE のガイドライン

API Management を使って、SSE を実装するバックエンド API に接続する場合は、次のガイドラインに従ってください。

  • 実行時間の長い HTTP 接続用のサービス レベルを選ぶ - SSE は、特定の API Management 価格レベルでサポートされている実行時間の長い HTTP 接続に依存します。 実行時間の長い接続は、クラッシックと v2 の API Management レベルではサポートされていますが、従量課金レベルではサポートされていません。

  • アイドル状態の接続を維持する - クライアントとバックエンド間の接続が 4 分以上アイドル状態になる可能性がある場合、接続を維持するメカニズムを実装してください。 たとえば、接続のバックエンドで TCP keepalive シグナルを有効にするか、少なくとも 4 分に 1 回クライアント側からトラフィックを送信します。

    この構成は、API Management インフラストラクチャで使われている、Azure Load Balancer で適用されるアイドル セッション タイムアウトの 4 分間をオーバーライドするために必要です。

  • イベントをクライアントに直ちに中継する - forward-request ポリシーで応答バッファーリングをオフにして、イベントがクライアントに直ちに中継されるようにします。 次に例を示します。

    <forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
    
  • 応答をバッファーリングする他のポリシーを避ける - validate-content などの特定のポリシーは応答内容をバッファーリングすることもあるため、SSE を実装する API と共に使わないでください。

  • Azure Monitor、Application Insights および Event Hubs の要求/応答本文のログ記録を回避する - 診断設定を使用して、Azure Monitor または Application Insights の API 要求ログを構成することができます。 診断設定では、要求実行のさまざまな段階で要求/応答本文をログ記録することができます。 SSE を実装している API の場合、予期しないバッファリングが発生し、問題になる可能性があります。 グローバル/すべての API スコープで構成された Azure Monitor と Application Insights の診断設定は、サービス内のすべての API に適用されます。 必要に応じて、個々の API の設定をオーバーライドできます。 Event Hubs にログを記録する場合は、 log-to-eventhubsを使用して、要求/応答ログのコンテキスト情報のスコープと量を構成します。 SSE を実装している API の場合、Azure Monitor、Application Insights および Event Hubs の要求/応答本文のログ記録が無効になっていることを確認してください。

  • 応答キャッシュを無効にする - クライアントへの通知がタイムリーに機能するように、応答キャッシュが有効になっていないことを確認します。 詳細については、「API Management のキャッシュ ポリシー」を参照してください。

  • 負荷をかけて API をテストする - 一般的な方法に従って、負荷をかけて API をテストし、運用環境に移行する前にパフォーマンスや構成の問題を検出します。

次のステップ

  • API Management の構成ポリシーの詳細について理解します。
  • API Management の容量について理解します。