Azure Webjob 队列触发器不起作用

Azure Webjob Queue trigger not working

我的队列触发器仅在 azure 队列中填充消息并且同时 webjob 为 运行 时才起作用。(在我的本地开发环境中) 但是当我首先启动 webjob(有队列触发器),然后在几秒钟后将新消息放入队列时,触发器没有检测到它们。一旦没有新消息,触发器就会停止收听。这是触发器的正常行为吗?如果不是,我该如何解决这个问题?

主要方法:

 static void Main()
    {
        InitializeQueue();
        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }

        var host = new JobHost();
        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();


    }

带队列触发器的函数

 public static void ProcessQueueMessage([QueueTrigger("myqueue")] CloudQueueMessage message)
    {
        Debug.Write(message.AsString);     
    }

对于按需 WebJobs,Azure 有一个名为 WEBJOBS_IDLE_TIMEOUT 的配置设置,以秒为单位表示,默认为两分钟。

如果您的按需 WebJob 没有在 WEBJOBS_IDLE_TIMEOUT 间隔内触发,Azure 将终止您的 WebJob。

我建议将您的 Web 应用程序的 WEBJOBS_IDLE_TIMEOUT 变量设置为合理的秒数,以防止这种情况发生。

您可以在 Web 应用程序的应用程序设置屏幕上设置此变量,方法是将其添加到托管您的 WebJob 的 Web 应用程序实例的应用程序设置部分。