如何在 API 管理中禁用响应缓冲并强制立即刷新?

How do I disable response buffering in API Management and force immediate flush?

我有一个 http 触发的 Azure 函数,它带有一个返回 json 对象集合的固定响应。每 10 个对象刷新一次响应,中间有 2 秒的延迟。

当直接将此端点调用到函数时,我立即收到刷新的响应,没有缓冲 - 10 个完整的对象,延迟 2 秒。

当我通过 Azure 的 APIM 调用此端点时,响应不再立即刷新。我得到了部分对象,并且响应似乎正在命中一个缓冲区,该缓冲区仅在特定时间或大小后才被刷新。

如何强制 APIM 不缓冲响应?

当您 forward request 时,设置 buffer-request-body="false" 将禁用缓冲区请求。

<forward-request timeout="time in seconds" follow-redirects="false | true" buffer-request-body="false" fail-on-error-status-code="false | true"/>

另外,不要使用 <set-body> 政策。 set-body 的内部文本缓冲在内存流中并传递给接收者。

我能够从 Microsoft 获得关于禁用响应缓冲的未记录属性的响应。尚未对此进行广泛测试,但似乎有效。

<backend>
   <forward-request buffer-response="false" />
</backend>