有没有办法告诉主机停止接收队列中的消息?或者在服务总线扩展中,我们是否有一个钩子可以用来阻止消息被拾取?
我能想到的用例有两个。Graceful shutdown和如果我们检测到数据库不可用。如果数据库不可用,那么就没有必要处理消息,但是如果我们不能告诉它停止接收消息,那么所有的消息都会在DLQ中结束,尽管它们很可能是完全有效的。
我们使用了一个 ServiceBusTrigger
而在我们的启动代码中,我们调用 host.UseServiceBus()
这就很好地自动从队列中提取信息。
如果我们调用 host.Stop()
那么它显然停止了从队列中接收消息。不幸的是,它也停止了所有可能正在进行的处理。我们希望在调用stop之前确保任何正在进行的处理完成。