【问题标题】:Azure WebJob does not trigger queueAzure WebJob 不触发队列
【发布时间】:2015-08-01 18:02:45
【问题描述】:

我创建了 Azure WebJob。将其作为连续作业发布。

这里是主要功能:

static void Main()
    {

        var config = new JobHostConfiguration();
        config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(2);
        config.Queues.MaxDequeueCount = 3;
        var host = new JobHost(config);
        host.RunAndBlock();
    }

这里是触发队列的函数:

   public static class Functions{
   public static void    ProcessQueueMessage([QueueTrigger("queue")]QueueMessage queueMessage, TextWriter log)
    {
        //du staff
    }
  }

然后我将消息发送到称为“队列”的队列,但未触发作业。 同样在仪表板中,我可以看到该作业已开始并执行。

还有一刻:当我在本地机器上调试它时一切正常:当消息出现在队列中时调用函数。

为什么Azure上队列中的消息没有触发它?

【问题讨论】:

  • 您在 webjob 日志中看到任何错误吗?

标签: c# azure azure-sql-database azure-web-app-service azure-webjobs


【解决方案1】:

其次是@Sandesh,我建议任何人先检查应用程序设置。

AzureWebJobsDashboardAzureWebJobsStorage 都应放置在 Azure 网站配置选项卡内的 应用设置 字段中,如下图所示。这两个键(AzureWebJobsStorageAzureWebJobsDashboard)是硬编码的,所以不要更改键名。

另外,放入 App.config 文件不够。请检查相应值是否放置在 Azure 配置选项卡的应用程序设置中。

【讨论】:

  • 如果没有设置 AzureWebJobsDashboard,webjob 根本不会运行,所以不可能是这个问题...
【解决方案2】:

我怀疑网络作业的存储配置可能未指向正确的存储帐户。请检查您是否正在写入为您的网络作业配置的存储帐户的队列。

另外要记住的一点是,如果 Web 作业托管在免费计划中,则 Web 作业可能没有运行。

Azure Documentation的一些要点

注意事项

  1. 如果没有对 scm(部署)站点的请求并且 Web 应用程序的门户未在 Azure 中打开,则免费模式下的 Web 应用程序可能会在 20 分钟后超时。对实际站点的请求不会重置此设置。
  2. 需要编写连续作业的代码以在无限循环中运行。连续作业仅在网络应用启动时连续运行。
  3. 基本和标准模式提供 Always On 功能,启用后可防止网络应用闲置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2017-09-14
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多