【问题标题】:How to handle azure web job pending restart如何处理 azure web 作业挂起的重启
【发布时间】:2017-06-12 10:46:11
【问题描述】:

我目前正在使用使用队列触发器的 azure web 作业,所以每当队列中有消息时,我都会调用一个函数,该函数将执行 15 分钟的耗时任务(将数据推送到文档数据库)并且也能够做到,现在由于我的天蓝色应用程序计划而出现套接字异常,并且网络启动正在自行重新启动,并且在进入毒队列之前再次重试此功能多次。

我想知道的几件事

  1. 如何处理异常并做一些日志记录?
  2. 如何在 Web 作业重新开始之前删除队列中的现有消息,以便我们不进行并发操作?
  3. 在网络作业关闭之前是否会触发任何事件,以便我可以做任何事情

感谢任何帮助或指示

【问题讨论】:

    标签: azure-webjobs azure-webjobssdk


    【解决方案1】:

    如何处理异常并做一些日志记录?

    要处理 WebJob 中的异常,您可以在 WebJob 中添加 try-catch 并将所有 Job 代码放在 try 块中。

    另一种方法是使用ErrorTrigger,我们需要安装 使用之前的 Azure WebJobs SDK 扩展。

    如何在 web 作业重新开始之前删除队列中的现有消息,以便我们不进行并发操作?

    您可以将 MaxDequeueCount 属性更改为 1。如果发生异常,消息将立即移至有害队列。

    JobHostConfiguration config = new JobHostConfiguration();
    config.Queues.MaxDequeueCount = 1;
    JobHost host = new JobHost(config); 
    

    在网络作业关闭之前是否会触发任何事件,以便我可以做任何事情

    我还没有找到任何会在网络作业关闭之前触发的事件。有 2 件事会导致 Web 作业关闭。

    1. 发生异常,我们可以使用 try-catch 块或 ErrorTrigger 记录异常。

    2. 由于 Web 应用计划重新启动,Web 作业中止。我们可以在函数中添加一个 CancellationToken 类型的参数,IsCancellationRequested 属性将在 WebJob 由于 Web App Plan 重新启动而中止之前设置为 true。

    public static void ProcessQueueMessage2([QueueTrigger("myqueue")] string message, CancellationToken cancellationToken)
    {
        Task.Run(new Action(LongRunningTask), cancellationToken);
        while (true)
        {
            Thread.Sleep(5000);
            if (cancellationToken.IsCancellationRequested)
            {
                Console.WriteLine("The function has been Cancelled");
            }
        }
    }
    
    public static void LongRunningTask()
    {
    
    }
    

    WebJob 中止之前的输出将是这样的。

    [06/12/2017 01:55:38 > 9d3635: SYS INFO] Status changed to Stopping
    [06/12/2017 01:55:42 > 9d3635: INFO] The function has been Cancelled
    [06/12/2017 01:55:43 > 9d3635: SYS INFO] WebJob process was aborted
    [06/12/2017 01:55:43 > 9d3635: SYS INFO] Status changed to Stopped
    

    【讨论】:

      猜你喜欢
      • 2014-09-12
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      相关资源
      最近更新 更多