您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
本主题将学习的内容
阅读本主题后,您将了解以下内容:
- Apigee Edge 中的请求和响应流式传输是什么
- 何时使用请求和响应流式传输
- 如何启用请求和响应流式传输
请求和响应流式传输是什么?
默认情况下,HTTP 流式传输处于停用状态,HTTP 请求和响应载荷会写入内存中的缓冲区,随后由 API 代理流水线进行处理。您可以通过启用流式传输来更改此行为。启用流式传输后,系统将流式传输请求和响应载荷,而无需修改客户端应用(对于响应)和目标端点(对于请求)。
何时应启用流式传输?
如果您的 API 代理处理非常大的请求和/或响应(如需了解大小限制,请参阅 我还需要了解流式传输的其他哪些内容? 下文),您可能需要启用流式处理。
我还需要了解流式传输的其他哪些内容?
在 Edge Cloud 和
Private Cloud 中,即使启用了流式传输,消息载荷大小也限制为 10 MB。在非流式传输的请求和响应中,超过
该大小会导致 protocol.http.TooBigBody 错误。
在 Edge for Private Cloud 部署中,您可以修改非流式传输的请求/响应大小 限制。请务必先进行测试,然后再将更改部署到生产环境。
- 对于 4.16.01 之前的 Edge for Private Cloud 版本:
在所有消息处理器上,修改http.properties文件以增加HTTPResponse.body.buffer.limit参数中的限制,然后重启 消息处理器。 -
对于 Edge for Private Cloud 4.16.01 及更高版本:
-
修改文件 /<inst_root>/apigee/customer/application/message-processor.properties。 如果该文件不存在,请创建该文件。
-
在 message-processor.properties 中设置 conf_http_HTTPResponse.body.buffer.limit 属性。例 如:
conf_http_HTTPResponse.body.buffer.limit=5m -
重启消息处理器:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart -
对所有消息处理器重复此操作。
-
如何启用请求和响应流式传输
如需启用请求流式传输,您需要将 request.streaming.enabled 属性添加到代理软件包中的 ProxyEndpoint 和 TargetEndpoint 定义,并将其设置为 true。同样,设置 response.streaming.enabled
属性以启用响应流式传输。
您可以在管理界面中代理的“开发”视图中找到这些配置文件。如果您是在本地开发,则这些定义文件位于 apiproxy/proxies
和 apiproxy/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>
<BasePath>/v1/weather</BasePath>
<Properties>
<Property name="allow.http10">true</Property>
<Property name="response.streaming.enabled">true</Property>
<Property name="request.streaming.enabled">true</Property>
</Properties>
</HTTPProxyConnection>
</ProxyEndpoint>如需详细了解如何配置端点定义,请参阅端点属性参考。
相关代码 示例
GitHub 上的 API 代理示例易于下载和使用。如需了解如何下载和使用示例,请参阅使用 API 代理示例。
具备流式传输功能的示例代理包括:
- 流式传输 - 演示针对 HTTP 流式传输配置的 API 代理。
- Edge Callout:签名网址生成器 - 说明生成签名网址以访问大型文件(而不是尝试在请求/响应中流式传输它们)的最佳做法。