我有一个Web作业,应该是一个触发的Web作业。我把它部署到azure罚款,它被列为触发webjob。但是,当我向天蓝色服务总线添加它具有功能的东西时。当我从用户界面触发它时,它会起作用,并会回复我的消息。
我的主机配置如此
var config = new JobHostConfiguration
{
JobActivator = new MyActivator(container)
};
config.UseServiceBus();
var host = new JobHost(config);
host.RunAndBlock();
我的功能看起来像这样
public void ProcessQueueMessage([ServiceBusTrigger("recipetest")] ProductName message, TextWriter log)
{
//code
}
我一直在寻找一段时间,但所有谷歌搜索都给了我带有功能触发器的连续Web作业。任何人都可以告诉我如何让Web作业唤醒和处理消息。我发现大多数其他答案都在谈论,但触发的工作应该不会一直有效。
答案 0 :(得分:3)
在我看来,连续webJob和触发器webjob之间的区别如下:
连续webJob:始终在Web应用程序中运行后端exe。
在webjob SDK ServiceBusTrigger场景中,即使您的各个功能被触发,WebJob也会持续运行(即您的exe保持运行并执行自己的内部触发)。
触发的webjob:按计划或手动触发。
注意:Webjobs都是由Web应用程序运行的,如果Web应用程序闲置一段时间,它们就会被卸载。这使系统可以节省资源。
因此,连续和触发(预定CRON)webjobs都需要“始终开启”。
答案 1 :(得分:2)
要使用ServiceBusTrigger,您的WebJob必须是连续的。
为了添加更多细节,如果没有找到消息,ServiceBusTriggerAttribute实际上会使用退避轮询它监视的消息队列。所以你可以看到添加到队列中的消息不会被唤醒"一个WebJob并告诉它做某事 - 而不是ServiceBusTriggerAttribute轮询并将在新消息等待处理时找到。这就是为什么如果您正在使用ServiceBusTriggerAttribute,则无法触发WebJob。