1

我正在使用 Azure 逻辑应用的最新预览版,我的一个主题检查消息标头中的字符串是否匹配SOME_STRING,如下面的代码所示

    "authenticatedresponse": {
        "conditions": [
            { 
                "expression": "@equals(coalesce(trigger().outputs?.headers?['CHECK_THIS_STRING'], ''),  'SOME_STRING')"
            }
        ],
        "inputs": {
            "statusCode": 202
        },
        "type": "Response"
    }

该主题应该检查条件是否为真,然后将消息传递给服务总线。它适用于 99% 的情况,但有时我会收到超时异常消息{"code":"ActionResponseTimedOut","message":"The execution of template action 'authenticatedresponse' is failed: the client application timed out waiting for a response from service. This means that workflow took longer to respond than the alloted timeout value. The connection maintained between the client application and service will be closed and client application will get an HTTP status code 504 Gateway Timeout."}

正如你所看到的,这是一个非常简单的条件,所以它真的不应该花费很多时间来执行。有谁知道问题可能是什么?

4

2 回答 2

0

这可能有多种原因。常见的有:

  1. 响应操作之前的操作需要超过 90 秒才能完成
  2. 由于超过应用程序在 5 分钟内可能完成的操作数限制(例如,应用程序的大量同时运行,例如在高负载下),逻辑应用程序受到限制

对于 (1),降低应用程序的复杂性,在响应步骤之后移动对时间敏感的操作,或者将应用程序拆分为多个部分。

对于 (2),当前的默认限制是 100k 操作,可以在给定的 5 分钟内完成,之后您的应用程序将被限制。您可以通过访问 Azure 门户的 Metrics 部分,选择您的应用程序,然后添加“Action Throttled Events”(或“Trigger Throttled Events”)来验证这种情况是否发生。如果这是问题所在,您可以将应用程序配置为“高吞吐量模式”(当前处于预览状态)以将限制增加到 300k。Microsoft 的说明对我无法通过 ARM 模板启用,但此代码可以:

  "properties": {
    "state": "Enabled",
    "runtimeConfiguration": {
      "operationOptions": "OptimizedForHighThroughput"
    },...
于 2020-07-20T16:14:56.197 回答
0

响应操作超时基于逻辑应用运行的整体执行持续时间,而不仅仅是响应操作本身的执行持续时间。

因此,如果逻辑应用运行的完成时间超过 90 秒(到达响应操作),则客户端连接将关闭(假设客户端仍在等待 http 响应)并且响应操作失败。

于 2016-06-10T19:01:52.307 回答