1

有没有办法告诉主机停止从队列中提取消息?或者服务总线扩展中有一个钩子可以用来阻止消息被拾取吗?

我能想到两个用例。正常关闭,如果我们检测到我们的数据库不可用。如果数据库不可用,则尝试处理消息毫无意义,但如果我们不能告诉它停止接收消息,那么所有这些消息都将最终出现在 DLQ 中,即使它们很可能是完全有效的。

ServiceBusTrigger我们在我们调用的启动代码中使用and host.UseServiceBus(),这很好地自动从队列中获取消息。

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

4

1 回答 1

0

假设您只想禁用特定的 webjob 功能,否则仍然可以工作。如果是,有两种方法可以实现它。

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

于 2020-05-12T07:04:59.720 回答