1

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

我怎样才能看到问题是什么,以及为什么消息是死信?

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

4

1 回答 1

1

我认为 ASB 没有办法自动将错误与死信消息一起保留在某处。你可以做两件事之一:

  • 调用时SubscriptionClient.OnMessage,使用带OnMessageOptions onMessageOptions参数的重载,并在onMessageOptionsExceptionReceived. 每当消息到达时发生未处理的异常时,ASB 都会调用它。然后,您可以在日志中记录异常以及消息 ID 等,以便以后进行故障排除。
  • 或者,不要让 ASB 看到您未处理的异常,而是在消息回调中使用 try / catch(第一个参数SubscriptionClient.OnMessage),并在那里执行相同的错误记录。
于 2015-12-15T18:32:15.947 回答