我正在研究设置一个Web作业触发器以从服务总线队列中读取消息。在处理下游系统时发生任何错误的情况下,实现重试逻辑的最佳实践是什么。
我们是否可以引发异常,以使该消息不会从队列中删除,而是在特定时间段后重试?
感谢您的反馈。
答案 0 :(得分:1)
您不需要显式定义重试逻辑。当消息从服务总线出队时,它在特定时间段内从队列中变为不可见(锁定时间默认为30secs,您可以对其进行配置)。您尝试处理该消息,如果成功,则只需调用BrokeredMessage.CompleteAsync,这意味着我已完成并将此消息标记为完成。如果下游有问题,可以通过调用BrokeredMessage.AbandonAsync放弃消息。这将解锁该消息,并且该消息重新出现在队列中。该消息将由工作人员再次提取并处理。直到您成功或达到最大重试限制,然后该消息才被发送到死信队列。