当天蓝色服务总线中有消息时,Azure触发的webjob不会触发

时间:2017-05-10 16:25:36

标签: azure azure-webjobs azureservicebus

我有一个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作业唤醒和处理消息。我发现大多数其他答案都在谈论,但触发的工作应该不会一直有效。

2 个答案:

答案 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。