我创建了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
}
}
比我发送消息到名为" queue"的队列,但是没有触发作业。 同样在仪表板中我可以看到,该作业已经开始并执行。
还有一刻:当我在本地机器上调试时,所有这些都很好:当消息出现在队列中时调用的函数。
为什么它不是由Azure上的队列中的消息触发的?
答案 0 :(得分:2)
随后@Sandesh,我建议任何人首先检查应用程序设置。
AzureWebJobsDashboard
和AzureWebJobsStorage
都应放置在Azure网站配置标签内的应用设置字段中,如下图所示。这两个键(AzureWebJobsStorage
,AzureWebJobsDashboard
)是硬编码的,因此 NOT 更改键名。
此外,放入App.config文件不够。请检查值是否相应地放置在Azure配置选项卡的应用程序设置中。
答案 1 :(得分:0)
我怀疑Web作业的存储配置可能没有指向正确的存储帐户。请检查您是否正在写入使用Web作业配置的存储帐户的队列。
还要记住的另一点是,如果Web作业托管在免费计划中,则可能是Web作业未运行。
中的一些要点备注
- 如果没有向scm(部署)站点发出请求且Web应用程序门户未在Azure中打开,则免费模式下的Web应用程序可能会在20分钟后超时。对实际站点的请求不会重置此项。
- 需要编写连续作业的代码以无限循环运行。只有在Web应用程序启动时,连续作业才会连续运行。
- 基本和标准模式提供Always On功能,启用该功能可防止Web应用程序闲置。
醇>