Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

リクエストとレスポンスのストリーム配信

このトピックで説明する内容

このトピックでは、以下のことを説明します。

  • Apigee Edge でのリクエストやレスポンスのストリーム配信
  • リクエストやレスポンスのストリーム配信を使用すべき状況
  • リクエストやレスポンスのストリーム配信を有効にする方法

コードサンプルに直行したい場合は、「関連コードサンプル」で詳細を確認してください。

リクエストやレスポンスのストリーム配信とは?

デフォルトで、HTTP ストリーム配信は無効で、HTTP リクエストおよびレスポンスペイロードはメモリー内のバッファーに書き込まれてから、API プロキシパイプラインによって処理されます。この動作は、ストリーム配信を有効にすることで変更できます。ストリーム配信を有効にすると、リクエストとレスポンスのペイロードが変更なしにクライアントアプリ (レスポンスの場合) やターゲットエンドポイント (リクエストの場合) にストリーム配信されます。 

ストリーム配信を有効にすべき状況

API プロキシがとても大きなリクエストやレスポンスを処理する場合は (サイズの上限については、後述の「ストリーム配信について他に知っておくべきこと」を参照)、ストリーム配信を有効にすることを検討してください。例えば、Comet 風のアプリケーションのように、出力を長時間にわたって返す Node.js アプリケーションが Edge に展開されている場合に、ストリーム配信によるレスポンスフローを有効にすることが考えられます。また、きわめて大量のデータを受け入れたり返したりするアプリケーションがある場合も、ストリーム配信を有効にすることを検討してください。 

API が大量のデータを要求するか返すかすると、この HTTP エラーが表示されることがあります。

{"fault":"{\"detail\":{\"errorcode\":\"protocol.http.TooBigBody\"},\"faultstring\":\"Body buffer overflow\"}"}

このエラーが表示された場合は、ストリーム配信を有効にすることをお勧めします。ストリーム配信を有効にした後も引き続きこのエラーが表示される場合は、該当するリクエストまたはレスポンスペイロードにアクセスする必要のあるポリシーをすべて削除することを検討してください。詳細については、「API プロキシの設計と開発のベストプラクティス」の「メッセージペイロードサイズ」を参照してください。

ストリーム配信について他に知っておくべきこと

メッセージペイロードサイズには以下の制約があります。これらのサイズを上回ると protocol.http.TooBigBody エラーになります。

  • 10MB in Edge Cloud
  • Edge for Private Cloud では 10 MB

In Edge for Private Cloud deployments, you can modify this value. Be sure to test before deploying the change to production. 

  • For Edge for Private Cloud releases previous to 4.16.01:

    On all Message Processors, edit the http.properties file to increase the limit in the HTTPResponse.body.buffer.limit parameter and then restart the Message Processor. 
  • For Edge for Private Cloud release 4.16.01 and later:
    1. Edit the file /<inst_root>/apigee/customer/application/message-processor.properties. If that file does not exist, create it.

    2. Set the conf_http_HTTPResponse.body.buffer.limit property in message-processor.properties. For example:
      conf_http_HTTPResponse.body.buffer.limit=5m

    3. Restart the Message Processor:
      > /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    4. Repeat for all Message Processors.

We strongly recommend you do not attach policies where streaming is enabled (request or response). If policies are attached, buffering can occur that limits payload size to the numbers listed above, which defeats the purpose of enabling streaming to handle large payloads.

リクエストやレスポンスのストリーム配信を有効にする方法

リクエストのストリーム配信を有効にするには、request.streaming.enabled プロパティをプロキシバンドルの ProxyEndpoint 定義と TargetEndpoint 定義に追加し、true に設定する必要があります。同様に、response.streaming.enabled プロパティを設定して、レスポンスのストリーム配信を有効にします。

プロキシの構成ファイルの場所は、プロキシの管理 UI の「Develop」ビューで確認できます。ローカルで開発している場合、定義ファイルは apiproxy/proxiesapiproxy/targets にあります。 

このサンプルは、TargetEndpoint 定義でリクエストとレスポンスのストリーム配信をどちらも有効にする方法を示しています。

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

こちらの例は、ProxyEndpoint 定義でリクエストとレスポンスのストリーム配信を有効にする方法を示しています。

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="allow.http10">true</Property>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
  </HTTPProxyConnection>
</ProxyEndpoint>

エンドポイント定義の構成の詳細については、「Endpoint properties reference」を参照してください。

関連コードサンプル

GitHub に用意されている API プロキシサンプルは、簡単にダウンロードして使用できます。サンプルのダウンロードと使用の詳細については、「Using the sample API proxies」を参照してください。 

ストリーム配信を使用するサンプルプロキシには以下があります。

  • streaming - HTTP ストリーム配信用に構成された API プロキシのデモです。 

 

Help or comments?