Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文提供有关在 API Management 中配置可实现服务器发送的事件 (SSE) 的 API 的指南。 SSE 基于 HTML5 EventSource
标准,用于在客户端建立连接后通过 HTTP 自动将数据流式传输(推送)到客户端。
Sugerencia
API 管理还为 WebSocket API 提供原生支持,这些 API 使客户端和服务器之间保持单一、持久、双向的连接。
- 现有的 API 管理实例。 创建一个(如果尚未创建)。
- 用于实现 SSE 的 API。 使用受支持的导入方法之一将 API 导入并发布到 API 管理实例。
当使用 API Management 来访问实现 SSE 的后端 API 时,请遵循以下准则。
为长时间运行的 HTTP 连接选择服务层 - SSE 依赖于某些 API 管理 定价层支持的长时间运行的 HTTP 连接。 经典和 v2 API 管理层支持长时间运行的连接,但消耗层不支持。
使空闲连接保持活动状态 - 如果客户端和后端之间的连接可能空闲 4 分钟或更长时间,请实现使连接保持活动状态的机制。 例如,在连接的后端启用 TCP keepalive 信号,或者至少每 4 分钟从客户端发送一次流量。
此配置需要覆盖 Azure 负载均衡器强制执行的 4 分钟的空闲会话超时时间,该均衡器用于 API Management 基础架构。
将事件立即中继到客户端 - 关闭策略上的
forward-request
响应缓冲,以便事件立即中继到客户端。 例如:<forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
避免使用其他可缓冲响应的策略 - 某些策略(如 )也可以缓冲响应内容,不应与实现 SSE 的 API 一起使用。
避免记录 Azure Monitor、Application Insights 和事件中心的请求/响应正文 - 可以使用诊断设置为 Azure Monitor 或 Application Insights 配置 API 请求日志记录。 借助该诊断设置,可以在请求执行的各个阶段记录请求/响应正文。 对于实现 SSE 的 API,这可能会导致意外缓冲,从而导致问题发生。 在全局/所有 API 范围内配置的 Azure Monitor 和 Application Insights 的诊断设置适用于服务中的所有 API。 可以根据需要替代单个 API 的设置。 登录到事件中心时,可以使用log-to-eventhubs来配置请求/响应日志记录的范围和上下文信息量。 对于实现 SSE 的 API,请确保已禁用 Azure Monitor、Application Insights 和事件中心的请求/响应正文日志记录。
禁用响应缓存 - 若要确保及时向客户端发送通知,请验证是否未启用 响应缓存 。 有关详细信息,请参阅 API 管理缓存策略。
在负载下测试 API - 在投入生产之前,遵循常规做法在负载下测试 API,以检测性能或配置问题。