【问题标题】:Azure Storage Queue WebJob never stopsAzure 存储队列 WebJob 永不停止
【发布时间】:2015-09-08 10:39:26
【问题描述】:

我有一个在 Azure 上运行的 WebApp,WebApp 的目的是处理来自 Azure 存储队列的作业。它设置为始终开启。问题是当我在 Azure 管理门户中停止 WebApp 时,作业实际上并没有停止。

我将工作实例化为:

class Program
    {
        static void Main()
        {
                string connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;

                JobHostConfiguration config = new JobHostConfiguration(connectionString);
                config.NameResolver = new QueueNameResolver();

                JobHost host = new JobHost(config);

                // The following code ensures that the WebJob will be running continuously
                host.RunAndBlock();
        }
    }

处理队列的函数是:

public static void ProcessQueueMessage([QueueTrigger("%apilogeventqueue%")] CloudQueueMessage messageEnvelope, TextWriter log, CancellationToken token)
{

}

我有跟踪日志记录,因此我可以看到作业实际上从未停止过。

【问题讨论】:

  • 更糟糕的是,当我导航到 WebJobs 选项卡并查看 Web 作业的日志时,我实际上可以看到作业处于活动状态,但我已将 Always on 更改为 false 并停止了 WebApp

标签: azure web-applications azure-webjobs azure-webjobssdk azure-storage-queues


【解决方案1】:

WebJobs 在主机 WebApp 的特殊 SCM (source control management) site 下运行。当您在门户中停止 WebApp 时,此 WebApp 的 SCM 部分会继续运行,因为它为 WebApp 提供即使在停止时也需要可用的管理功能。

要停止运行 WebJob,您可以在门户 UI 中禁用它,方法是右键单击作业列表中的作业并选择“停止”。您还可以通过将 WEBJOBS_STOPPED 应用设置设置为 1 (details here) 来停止 WebApp 中的所有作业。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-19
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多