我的队列触发器仅在使用消息填充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);
}
答案 0 :(得分:1)
对于按需WebJobs,Azure有一个名为WEBJOBS_IDLE_TIMEOUT
的配置设置,以秒为单位,默认为两分钟。
如果在WEBJOBS_IDLE_TIMEOUT
间隔内未触发按需WebJob,Azure将终止您的WebJob。
我建议将Web App的WEBJOBS_IDLE_TIMEOUT
变量设置为一个健康的秒数,以防止这种情况发生。
您可以在Web App的“应用程序设置”屏幕上设置此变量,方法是将其添加到托管WebJob的Web App实例的“应用程序设置”部分。