为服务器发送的事件配置 API

本文提供有关在 API Management 中配置可实现服务器发送的事件 (SSE) 的 API 的指南。 SSE 基于 HTML5 EventSource 标准,用于在客户端建立连接后通过 HTTP 自动将数据流式传输(推送)到客户端。

提示

API Management 还为 WebSocket API 提供本机支持,该 API 在客户端和服务器之间保持一个单一持久的双向连接。

先决条件

可用性

重要

此功能在 API 管理的“高级”、“标准”、“基本”和“开发人员”层中可用 。

SSE 指南

当使用 API Management 来访问实现 SSE 的后端 API 时,请遵循以下准则。

  • 为长时间运行的 HTTP 连接选择服务层级 - SSE 依赖于长时间运行的 HTTP 连接。 专用 API Management 层支持长时间运行的连接,但消耗层不支持。

  • 使空闲连接保持活动状态 - 如果客户端和后端之间的连接可能空闲 4 分钟或更长时间,请实现使连接保持活动状态的机制。 例如,在连接的后端启用 TCP keepalive 信号,或者至少每 4 分钟从客户端发送一次流量。

    此配置需要覆盖 Azure 负载均衡器强制执行的 4 分钟的空闲会话超时时间,该均衡器用于 API Management 基础架构。

  • 立即将事件中继到客户端 - 关闭 forward-request 策略上的响应缓冲,以便事件能立即转发到客户端。 例如:

    <forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
    
  • 避免使用其他可缓冲响应的策略 - 某些策略(如 validate-content)也可以缓冲响应内容,不应与实现 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 Management 缓冲策略

  • 在负载下测试 API - 在投入生产之前,遵循常规做法在负载下测试 API,以检测性能或配置问题。

后续步骤