サーバー送信イベントの API を構成する
適用対象: 開発者 | Basic | Basic v2 | Standard | Standard v2 | Premium
この記事では、API Management でサーバー送信イベント (SSE) を実装する API を構成するためのガイドラインを示します。 SSE は、クライアントが接続を確立した後、HTTP を介してクライアントにデータを自動的にストリーミング (プッシュ) するための HTML5 EventSource
標準に基づいています。
ヒント
API Management では、クライアントとサーバー間で 1 つの持続的な双方向接続を維持する WebSocket API もネイティブでサポートされています。
前提条件
- 既存の API Management インスタンスがある。 まだない場合は、作成してください。
- SSE を実装する API。 サポートされているインポート メソッドの 1 つを使って、API を API Management インスタンスにインポートして公開します。
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 をテストし、運用環境に移行する前にパフォーマンスや構成の問題を検出します。