如果导致未处理的异常,如何从 azure 服务总线队列中删除消息?

How to removed message from azure service bus queue if it causes an unhandled exception?

我正在构建一个使用 Azure 服务总线队列的 azure 应用程序,我 运行 遇到以下情况:

我的工作者角色从服务总线队列接收到一条消息并开始处理它。在此过程中,发生未处理的异常(无法捕获)。这会导致辅助角色实例进行回收。由于实例被回收,我的消息从未完成并且仍在队列中。一旦我的实例回收并启动,它就会获取队列中的第一条消息,这是导致未处理异常的原因。

有什么方法可以处理这种情况并从队列中删除消息吗?

Is there any way to handle this scenario and remove the message from the queue?

正如 Gaurave Mantri 提到的,您可以将最大送货数量 设置为您想要的值。 默认值为 10。更多详细信息,您可以自动参考Exceeding MaxDeliveryCount. If the retry times up to Max delivery then the queue message will move to dead letter queue

Queues and subscriptions each have a QueueDescription.MaxDeliveryCount and SubscriptionDescription.MaxDeliveryCount property respectively; the default value is 10. Whenever a message has been delivered under a lock (ReceiveMode.PeekLock), but has been either explicitly abandoned or the lock has expired, the message BrokeredMessage.DeliveryCount is incremented. This behavior cannot be disabled.