我创建了一个使用QueueInput触发器的简单Azure WebJob。它没有任何问题地部署,我通过管理门户安排它,以便“连续运行”
初步测试似乎很好,在将任何内容放入队列后不久就会触发作业。
我偶然离开了大约一天,然后将其他任何东西放入队列中。这次作业没有在几分钟内触发,所以我登录到门户网站查看调用日志 - 这表明作业刚刚被触发了。
这似乎太巧合,所以我在将一些东西放入队列之前的另一天离开了它。同样,这项工作没有触发。我把它留在了一夜之间,到了早上它还没有触发。
这次登录管理门户时,我注意到WebJobs页面上的作业被标记为“已中止”。在状态变为“正在运行”之前,它只有大约10秒钟。然后,就像预期的那样,工作立即从前一天晚上排在队列中的工作中触发。
由于这是一个alpha版本,我预计会出现故障。只是想知道是否有其他人有类似的经历。
答案 0 :(得分:2)
对于WebJobs SDK,您的作业必须正在运行才能侦听触发器(新队列消息,新blob等)。 Azure网站免费套餐具有配额,将使您的工作进入睡眠状态,这意味着它不再监听触发器。使用该网站可能会使其恢复生机并再次开始收听触发器。
如果托管作业未运行,SDK仪表板将在功能旁边显示警告图标(它通过心跳检测到这一点)。
答案 1 :(得分:2)
确保您的网站配置了"始终开启"设置已启用。
如果您的网站包含连续运行的作业,如果禁用此设置,则可能无法可靠地执行这些作业。
http://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/
默认情况下,如果网站已闲置一段时间,则会将其卸载。这使系统可以节省资源。如果需要始终加载站点,则可以在标准模式下为站点启用“始终开启”设置。如果禁用“始终开启”,连续的Web作业可能无法可靠地运行,则应在站点上运行连续Web作业时启用“始终开启”。