アンチパターン: ストリーミングが有効な場合にリクエスト / レスポンス ペイロードにアクセスする

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
Apigee Edge のドキュメントはこちらをご覧ください。

Apigee のデフォルトの動作では、HTTP リクエスト / レスポンスのペイロードは、メモリ内バッファに格納された後、API プロキシのポリシーによって処理されます。

ストリーミングを有効にすると、リクエストとレスポンスのペイロードは変更されずに、クライアント アプリ(レスポンスの場合)やターゲット エンドポイント(リクエストの場合)にストリーミングされます。アプリケーションが大きなペイロードの受け渡しを行う場合や、長時間にわたってチャンク形式でデータを返すアプリケーションがある場合は、ストリーミング機能は特に役立ちます。

アンチパターン

ストリーミングを有効にしてリクエスト / レスポンス ペイロードにアクセスすると、Apigee がデフォルトのバッファリング モードに戻ります。

リクエストから、Message Processor の割り当てポリシー、Message Processor の抽出変数、ターゲットへ。ターゲットから、Message Processor の JSONToXML、レスポンスへ。
図 1: ストリーミングを有効にしてリクエスト / レスポンス ペイロードにアクセスする

上図では、リクエスト ペイロードから変数を抽出し、JSONToXML ポリシーを使用して、JSON レスポンス ペイロードを XML に変換しようとしています。これにより、Apigee でのストリーミングが無効になります。

影響

  • ストリーミングが無効になり、データ処理のレイテンシが増加する可能性があります。
  • Message Processor でヒープメモリの使用率が上昇するか、OutOfMemory エラーが発生する可能性があります。インメモリ バッファの使用によるもので、大きなリクエスト / レスポンス ペイロードがある場合は特にその可能性が高まります。

ベスト プラクティス

  • ストリーミングを有効にしている場合は、リクエスト / レスポンス ペイロードにアクセスしないでください。

関連情報