问题描述
我有一个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>