向死信添加异常详细信息

本文关键字:异常 详细信息 添加 | 更新日期: 2023-09-27 18:26:50

将代理服务总线(在Azure中)与具有多个订阅的主题一起使用时,某些订阅在处理消息时引发异常。然后,这些消息被放入该订阅的死信队列中。

我怎样才能知道问题出在哪里,以及为什么信息是死信

我想我可以修改这封死信,但用抛出的例外来修改信息是常见的做法吗?如果是,如何使用BrokeredMessage对象完成此操作?可以使用BrokeredMessage放弃消息。放弃(IDictionary[String,Object]),但用它来记录例外情况是一种已知的做法,还是有更好的方法?

向死信添加异常详细信息

我认为ASB没有办法自动将错误与死信消息一起保存在某个地方。不过,你可以做以下两件事之一:

  • 调用SubscriptionClient.OnMessage时,使用带有OnMessageOptions onMessageOptions参数的重载,并在onMessageOptionsExceptionReceived中提供错误处理程序。每当消息到达时发生未处理的异常时,ASB都会调用它。然后,您可以将异常以及消息ID等记录在日志中,以便以后进行故障排除
  • 或者,与其让ASB看到未处理的异常,不如在消息回调中使用try/catch(SubscriptionClient.OnMessage中的第一个参数),并在那里执行相同的错误日志记录