我一直在尝试使用最新的Azure Service Bus SDK。使用非常低容量的主题消息(通过我的浏览器手动执行的Azure功能HTTP触发器发布),我在Azure仪表板中看到了相当高的故障率 - 类似于每四或五条消息中的一个失败。但是,我从未在Azure功能代码中捕获任何异常。发送应用程序如何检测这些故障?就此而言,如何记录具体的故障?我在图表中看到了峰值,但无法找到详细信息。 (我正在使用MSDN VS Enterprise免费订阅。)有时排队的消息和/或失败不会在Azure门户中显示几分钟。 (到目前为止,我还没有写过订阅者,但我猜这个门户网站实际上是某种“订阅一切”的客户端。)
主题未使用长TTL(14天默认值)进行分区。没有欺骗检测。代码很简单(try / catch省略),newevent是一个简单的C#类,只有几个属性,而ToString是一个使用JsonConvert的覆盖:
TopicClient topic = new TopicClient(connection, topic);
Message msg = new Message(Encoding.UTF8.GetBytes(newevent.ToString()));
msg.MessageId = newevent.Timestamp;
await topic.SendAsync(msg);
await topic.CloseAsync();
答案 0 :(得分:0)
我不认为它是低流量流量的拦截器,但您不应该为每条消息新建并关闭TopicClient
。您可以创建一次并重复用于后续请求。
在Azure Functions的上下文中,最好使用输出绑定功能而不是自己创建TopicClient
,请参阅docs中的示例。然后,运行时将为您管理主题客户端。