有没有办法告诉主机停止从队列中提取消息?或者服务总线扩展中有一个钩子可以用来阻止消息被拾取吗?
我能想到两个用例。正常关闭,如果我们检测到我们的数据库不可用。如果数据库不可用,则尝试处理消息毫无意义,但如果我们不能告诉它停止接收消息,那么所有这些消息都将最终出现在 DLQ 中,即使它们很可能是完全有效的。
ServiceBusTrigger
我们在我们调用的启动代码中使用and host.UseServiceBus()
,这很好地自动从队列中获取消息。
如果我们调用host.Stop()
,那么它显然会停止从队列中提取消息。不幸的是,它还会停止所有可能正在进行的处理。我们希望确保在调用停止之前完成任何正在进行的处理。