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

问题描述

我有一个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>