我是Azure Logic Apps的新手,所以这个示例可能看起来不那么有用,但它只是为了学习一些基本的Azure Logic。
我有一个简单的HTTP侦听器(收到HTTP请求时) 它应该向某个服务发送另一个HTTP GET请求并向第一个调用者发送响应。 它看起来像这样: http://imgur.com/a/9fpfu
现在一切正常,直到我发送错误的数据或逻辑应用程序从HTTP请求中获得500 HTTP错误。
比Logic应用程序挂起大约1分钟的HTTP请求并失败。 之后的响应永远不会发送。
如何将Logic应用程序返回的响应转发给请求逻辑应用程序的请求者?
答案 0 :(得分:0)
如你所知500是一个未知的错误,因此logicapp引擎停止处理任何在重试后仍然保持500投掷的动作。对于这种特定情况,您需要设置logicapp诊断规则"操作失败" /"运行失败"。在规则中,您可以配置发送电子邮件和/配置webhook以响应事件
答案 1 :(得分:0)
逻辑应用程序默认会重试任何失败请求4次,因此当http服务返回错误5xx时,您会看到运行时间增加。您可以使用自定义重试策略配置此行为。查看更多https://azure.microsoft.com/en-us/updates/customizable-retry-policies-in-logic-apps/
默认情况下,Logic App步骤依赖于任何相关操作的成功。这会导致在http操作失败时跳过响应操作。
您有几种方法可以解决这个问题:
在代码视图中,您可以更新runAfter
属性,以便无论http操作是否成功,操作都会运行
"runAfter": { "Condition": [ "Succeeded", "Failed" ] }
在http操作的http状态代码上向Logic Apps添加条件,然后针对每个案例执行专门的Response
操作
答案 2 :(得分:0)
您可以将Http操作的重试策略和超时设置更新为