<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
本主题将学习的内容
阅读本主题后,您将了解以下内容:
- Apigee Edge 中的请求和响应流式传输是什么
- 何时使用请求和响应流式传输
- 如何启用请求和响应流式传输
请求和响应流式传输是什么?
默认情况下,HTTP 流式传输处于停用状态,HTTP 请求和响应载荷会写入内存中的缓冲区,随后由 API 代理流水线进行处理。您可以通过启用流式传输来更改此行为。启用流式传输后,系统将流式传输请求和响应载荷,而无需修改客户端应用(对于响应)和目标端点(对于请求)。
何时应启用流式传输?
如果您的 API 代理处理非常大的请求和/或响应(如需了解大小限制,请参阅下文中的我还需要了解流式传输的其他哪些内容?),您可能需要启用流式处理。
我还需要了解流式传输的其他哪些内容?
在 Edge Cloud 中,消息载荷大小上限为 10 MB,
Private Cloud,即使启用了流式传输。在非流式传输的请求和响应中,超过该大小会导致 protocol.http.TooBigBody
错误。
在用于私有云部署的 Edge 中,您可以修改非流式传输的请求/响应大小 上限。请务必先进行测试,然后再将更改部署到生产环境。
- 对于 4.16.01 之前的适用于私有云的 Edge 版本:
在所有消息处理器上,修改http.properties
文件以增加HTTPResponse.body.buffer.limit
参数中的上限,然后重启 消息处理器 -
对于适用于私有云的 Edge 版本 4.16.01 及更高版本:
<ph type="x-smartling-placeholder">
- </ph>
-
修改文件 /<inst_root>/apigee/customer/application/message-processor.properties。 如果该文件不存在,请创建它。
-
设置 conf_http_HTTPResponse.body.buffer.limit 属性(位于 message-processor.properties 中)。对于 示例:
conf_http_HTTPResponse.body.buffer.limit=5m -
重启消息处理器:
> /<inst_root>/apigee/apigee-service/bin/apigee-serviceedge-message-processor 重启 -
对所有消息处理器重复上述操作。
-
如何启用请求和响应流式传输
如需启用请求流式传输,您需要将 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:签名网址生成器 - 说明生成签名网址以访问大型文件(而不是尝试在请求/响应中流式传输它们)的最佳做法。