Azure存储队列WebJob永远不会停止

时间:2015-09-08 10:39:26

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

我在Azure上运行WebApp,WebApp的目的是从Azure存储队列处理作业。它设置为Always On。问题是,当我在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)
{

}

我有跟踪日志记录,因此我可以看到作业永远不会被停止。

1 个答案:

答案 0 :(得分:1)

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

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