Azure服务总线中有消息时,Azure触发的WebJob不会触发

f1tvaqid  于 2023-11-21  发布在  其他
关注(0)|答案(3)|浏览(114)

我有一个Web作业,应该是一个触发的Web作业。我已经将它部署到Azure罚款,它被列为触发的Web作业。但是,当我添加的东西到Azure服务总线,它有一个功能。当我从UI触发它的工作,并会响应我的消息。
我的主机配置如下

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
    }


我一直在寻找一段时间了,但所有的谷歌搜索都给了我回功能触发连续网络作业.有人能告诉我如何让网络作业唤醒和处理消息.我发现大多数其他答案谈论总是在但触发的工作应该工作没有总是在.

tvokkenx

tvokkenx1#

在我看来,连续webJob和触发webjob之间的区别如下:
持续webJob:始终在Web应用程序中运行后端exe。
在webjob SDK ServiceBusTrigger场景中,即使您的各个函数被“触发”,WebJob也会持续运行(即您的exe保持运行并进行自己的内部触发)。
触发的webjob:由计划或手动触发。
注意事项:Web作业全部由Web应用程序的进程运行,如果Web应用程序空闲一段时间,则会卸载它们。这可以让系统节省资源。
因此,连续和触发(计划CRON)Web作业都需要“始终打开”。

hmtdttj4

hmtdttj42#

要使用ServiceBusTrigger,您的WebJob必须是连续的。
为了补充更多的细节,如果找不到消息,ServiceBusTriggerAttribute实际上会轮询它使用回退监视的消息队列。因此,您可以看到,添加到队列中的消息不会“唤醒”WebJob并通知它执行某些操作-而ServiceBusTriggerAttribute会轮询并找出何时有新消息等待处理。服务总线触发器属性。

8dtrkrch

8dtrkrch3#

对我来说有两件事:
1.按如下方式调用ConfigureWebJobs

.ConfigureWebJobs(b =>
{
    b.AddServiceBus();
})

字符串
1.确保使用ServiceBusTrigger属性的函数被声明为public以及包含类(需要是public class)。

相关问题