当使用带有多个订阅主题的代理服务总线(在Azure中)时,某些订阅会在处理消息时抛出异常。然后将这些消息放入该订阅的死信队列中。
我怎样才能看到问题是什么,以及为什么邮件被删除了?
我想我可以修改死信,但通常的做法是使用引发的异常修改消息吗?如果是这样,如何使用BrokeredMessage
对象完成此操作?可以使用BrokeredMessage.Abandon(IDictionary[String, Object])放弃邮件,但是使用它来记录已知做法的例外情况还是有更好的方式?
答案 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等,以便以后进行故障排除。onMessageOptionsExceptionReceived
中的第一个参数),并在那里记录相同的错误。