向死信添加异常详细信息

时间:2015-12-15 16:50:37

标签: c# exception message-queue azureservicebus dead-letter

当使用带有多个订阅主题的代理服务总线(在Azure中)时,某些订阅会在处理消息时抛出异常。然后将这些消息放入该订阅的死信队列中。

我怎样才能看到问题是什么,以及为什么邮件被删除了?

我想我可以修改死信,但通常的做法是使用引发的异常修改消息吗?如果是这样,如何使用BrokeredMessage对象完成此操作?可以使用BrokeredMessage.Abandon(IDictionary[String, Object])放弃邮件,但是使用它来记录已知做法的例外情况还是有更好的方式?

1 个答案:

答案 0 :(得分:1)

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

  • 当您致电<!DOCTYPE html> <html> <head> <title></title> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </head> <body> <div class="container-fluid"> <div class="row"> <div class="col-md-8"> <div id="chart"></div> </div> <div class="col-md-4"> <h5>Features for day being hovered over</h5> <div id="showdata"></div> </div> </div> </div> <script src="/js/chart.js" type="text/javascript"></script> </body> </html>时,请使用带SubscriptionClient.OnMessage参数的重载,并在OnMessageOptions onMessageOptions中提供错误处理程序。每次在消息到达时发生未处理的异常,ASB都会调用它。然后,您可以在日志中记录异常以及消息ID等,以便以后进行故障排除。
  • 或者不是让ASB看到未处理的异常,而是在消息回调中使用try / catch(onMessageOptionsExceptionReceived中的第一个参数),并在那里记录相同的错误。