【问题标题】:TaskCanceledException on azure function (Service bus trigger)天蓝色函数上的 TaskCanceledException(服务总线触发器)
【发布时间】:2018-12-27 15:03:03
【问题描述】:

我有一个服务总线触发器 Azure 功能,每次主题收到消息时都会触发该功能。 消息定期到达,例如每 30 分钟一次。在批次之间,没有活动。

该函数没有什么特别的,它通过 HttpClient 异步发送消息。该函数会定期以 TaskCanceledException 停止。

HttpClient 是静态的

public static class SampleEventTrigger
{
    private static DefaultHttpWebHook webHook = new DefaultHttpWebHook(new Uri("https://nonexistent.invalid/sampleWebHook"), "/event/sampleEvent");

    [FunctionName("SampleEventTrigger")]
    public static async Task Run(
        [ServiceBusTrigger("sampleevent", "SampleEvent.Subs", AccessRights.Manage, Connection = GlobalConfiguration.ServiceBusConnection)]BrokeredMessage message,
        TraceWriter log)
    {
        log.Info("launch sample event subscription");

        try
        {
            var resp = await webHook.Post(message, log);
            log.Info($"{resp.StatusCode}, {resp.ReasonPhrase}");                
        }
        catch (Exception ex)
        {
            log.Error($"exception in webhook: {ex.Message}", ex);
            throw;
        }
    }
}

如果我稍后再举起它,这一次它就过去了。 这个异常从何而来?我们如何避免这种情况? 是否与超时有关,还是与启动太慢的功能有关?

我的功能处于消费模式。

【问题讨论】:

  • 顺便说一句,你为什么要等待Task.CompletedTask?您可以删除该行:)
  • 当然,只是快速复制粘贴代码来演示问题
  • 您能提供以下信息吗? 1) 您的函数应用部署所在的区域,2) 函数应用名称 (you can share privately),以及 3) 发生这种情况的时间范围(首选 UTC。)
  • 您好,Id=a27b04cd-7ce4-4a11-b8ed-e145fc9eabae 地区为西欧,时间戳:2018-07-18T09:30:00.193Z
  • 我得到了一个类似的TaskCancelledException,但内部异常为空。尽管就我而言,我使用的是TimerTrigger。我认为这与异步的方法有关。

标签: azure azure-functions azureservicebus


【解决方案1】:

您的 Http 调用可能会超时。等待的 Http 调用超时抛出 TaskCanceledException 。我不确定您的 DefaultHttpWebHook 类在幕后做了什么,但它应该在 Post 方法 (which itself should have the Async suffix) 中使用 PostAsync

为了验证您是否可以捕获 TaskCanceledException 并检查内部异常。如果您仍在苦苦挣扎,请在本地开发期间将您的代码转换为非异步代码,以便更好地处理正在发生的事情 - 它会给您一个真正的异常,而不是将其作为 TCE 冒泡。

【讨论】:

  • DefaultHttpWebHook 只是 httpclient 的一个包装器,是的,发出 PostAsync 调用
  • No 内部异常为空,异常发生在任何超时之前,执行不到一秒后
  • 好的,我已经更新了我的建议并删除了我认为可能不适合您的场景的代码
  • 不,我认为问题是在 30 分钟不活动后唤醒函数,函数中有异步调用
猜你喜欢
  • 2019-03-24
  • 2012-06-14
  • 1970-01-01
  • 2017-03-21
  • 2021-09-28
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多