在使用消息总线扩展的 Azure WebJob 中,我们能否告诉它停止接收消息?

问题描述 投票:1回答:1

有没有办法告诉主机停止接收队列中的消息?或者在服务总线扩展中,我们是否有一个钩子可以用来阻止消息被拾取?

我能想到的用例有两个。Graceful shutdown和如果我们检测到数据库不可用。如果数据库不可用,那么就没有必要处理消息,但是如果我们不能告诉它停止接收消息,那么所有的消息都会在DLQ中结束,尽管它们很可能是完全有效的。

我们使用了一个 ServiceBusTrigger 而在我们的启动代码中,我们调用 host.UseServiceBus()这就很好地自动从队列中提取信息。

如果我们调用 host.Stop()那么它显然停止了从队列中接收消息。不幸的是,它也停止了所有可能正在进行的处理。我们希望在调用stop之前确保任何正在进行的处理完成。

azureservicebus azure-webjobs webjob azure-webjobs-continuous
1个回答
0
投票

假设你只是想禁用一个特定的webjob功能,其他的还能用。如果是,有两种方法可以实现它。

首先使用 Disable 属性,在其上添加一个 Disable 到你的appsettings.json文件中,这个方法可以让你通过改变应用设置来启用和禁用功能。

enter image description here

另一种方法是在你的appsettings.json文件中添加 "AzureWebJobs.YourFunctionName.Disabled": "true" 到appsettings.json文件中去禁用功能。

enter image description here

以下是我的测试结果,两个功能都被禁用。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.