繁体   English   中英

当服务总线显式触发 Azure 函数死信消息,然后在最后抛出异常时会发生什么?

[英]What happens when Service bus triggered Azure function deadletter a message explicitly and then throw exception at the end?

我有一个场景,我使用服务总线触发的 azure 函数并在函数中使用 MessageReceiver 类。 如果发生任何异常,我将捕获它并使用消息接收器对象在 catch 块中对消息进行死信处理,然后我也使用 throw 语句。

catch (Exception exception)
 {
   await messageReceiver.DeadLetterAsync(lockToken, propertiesToModify).ConfigureAwait(false);
   throw;
}
  1. 在这种情况下,无论何时发生异常,我们都会明确地向死信发送消息。 这是否意味着它不会使用来自服务总线触发器(交付计数)的默认重试,它只会在第一次失败时向 DLQ 添加消息?

  2. 我应该在这里跳过 throw 语句,还是应该在达到交付计数后使用 DLQ 的默认行为?

重试设置

  • 您还可以从ServiceBusOptions配置RetryOptions
  • 这些设置确定是否应重试失败的操作,如果是,则确定重试尝试之间等待的时间量。
  • 这些选项还控制允许接收消息和与服务总线服务进行其他交互的时间量。
  • AutoComplete当设置为false ,您负责调用MessageReceiver方法来完成、放弃或死信消息。
  • 如果抛出异常(并且没有调用MessageReceiver方法),则锁保持不变。 一旦锁定到期,消息将重新排队并增加DeliveryCount并自动更新锁定。

请参阅在触发器弹性之上使用重试支持Azure 服务的重试指南最大传送计数DLQ 处理死信队列

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM