【问题标题】:Poll a Durable Function inside an Azure API Management request在 Azure API 管理请求中轮询持久函数
【发布时间】:2020-05-02 02:41:49
【问题描述】:

是否可以在 APIM 请求中进行内部短轮询,然后使用同步响应进行响应?

流程是这样的:
1. APIM 收到请求
2. APIM 触发持久函数编排。
3. APIM 等待并轮询持久函数响应(通过策略?)
4. APIM 以实际结果响应

对于 API 使用者,这将是一个请求。

这是一种常见的模式吗?还是只向 API 使用者提供 202 响应轮询 URL 更好?我预计该请求只需要几秒钟到一分钟左右的时间。

有没有我还没有考虑过的更标准的方法?

【问题讨论】:

    标签: polling azure-api-management long-polling azure-durable-functions


    【解决方案1】:

    您希望如何将 API 呈现给消费者是主观的。

    1. 如果您希望前端用户轮询 API,那么 202 Accepted 响应与位置标头中的轮询 url 是方式。
    2. 如果您想将您的 API 伪装成同步 API,您必须在 APIM 策略中实现轮询模式本身。为此,请参阅以下帖子

    Use API-M To Mask Async APIs When Moving Implementation to Logic Apps,即使它属于逻辑应用,您也可以为任何异步 API 实现相同的模式

    摘自链接:

    <outbound>
       <base />
       <retry condition="@(((IResponse)context.Variables["var"]).StatusCode == 202)" count="10" interval="30">
          <send-request mode="new" response-variable-name="var" ignore-error="false">
             <set-url>@(context.Response.Headers["location"][0])</set-url>
             <set-method>GET</set-method>
          </send-request>
       </retry>
       <return-response response-variable-name="var" />
    </outbound>
    

    正如我之前指出的,这实际上取决于您希望如何将 API 呈现给消费者。两种模式都有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      相关资源
      最近更新 更多