0

我创建了一个使用 QueueInput 触发器的简单 Azure WebJob。它部署没有任何问题,我已经通过管理门户对其进行了安排,以便它“连续运行”

初始测试似乎很好,在将任何内容放入队列后不久就会触发作业。

偶然地,我在将其他任何东西放入队列之前大约一天就离开了它。这次作业在几分钟内没有触发,所以我登录到门户查看调用日志 - 这表明作业刚刚被触发。

这似乎太巧合了,所以我又把它放在了另一天,然后才把东西放到队列中。同样,这项工作没有触发。我把它放了一夜,到早上它仍然没有触发。

这次登录管理门户时,我注意到该作业在 WebJobs 页面上被标记为“已中止”。就这样只持续了大约10秒钟,状态就变成了“正在运行”。然后,正如预期的那样,工作立即从前一天晚上放入队列的内容中触发。

因为它是一个 alpha 版本,所以我预计会出现故障。只是想知道有没有其他人有过类似的经历。

4

2 回答 2

2

对于 WebJobs SDK,您的作业必须正在运行才能侦听触发器(新队列消息、新 blob 等)。Azure 网站免费套餐有配额,会让你的工作进入休眠状态,这意味着它不再监听触发器。使用该站点可能会使其恢复生机并再次开始收听触发器。

如果托管作业未运行,SDK 仪表板将在函数旁边显示一个警告图标(它通过心跳检测到这一点)。

于 2014-02-10T16:54:20.500 回答
2

确保您的网站配置为启用了“始终开启”设置。

如果您的站点包含连续运行的作业,则如果禁用此设置,它们可能无法可靠地执行。

http://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/

默认情况下,如果网站闲置了一段时间,则会卸载它们。这使系统可以节省资源。如果站点需要一直加载,您可以在标准模式下为站点启用 Always On 设置。如果禁用 Always On,连续 Web 作业可能无法可靠运行,因此当您在站点上运行连续 Web 作业时,您应该启用 Always On。

于 2014-04-08T20:58:49.150 回答