我们面临着托管在 Azure Web 应用程序中的 Web API 的问题。我们正在 Azure 服务总线中插入一条消息。通过 Azure Web 应用将消息发送到服务总线队列时出现间歇性超时问题,但在本地调试相同的代码时,它工作正常。在这两种情况下,服务总线是相同的。找不到相同的原因。下面是代码片段。
Logger.Log(ErrorLevel.Info, "Started Sending Message to Service Bus for Job Id :" + newjobObject.JobId);
ServiceBusRepository.SendMessageToQueue(jobEntity.JobId);
Logger.Log(ErrorLevel.Info, "Completed Sending Message to Service Bus for Job Id :" + newjobObject.JobId);
这是 SendMessageToQueue 方法的代码
public static void SendMessageToQueue(string Message)
{
try
{
var message = new BrokeredMessage(Message);
Logger.Log(ErrorLevel.Info,"Before SendMessagetoQueue= " + message);
sendQueueClient.Send(message);
Logger.Log(ErrorLevel.Info,"After SendMessagetoQueue= " + message);
}
catch(Exception ex)
{
Logger.Log(ex.Message.ToString());
}
}
在日志中,只有第一个日志记录语句被记录,而不是第二个日志记录语句。因此,这意味着在发送消息时发生了一些异常。任何人都可以提供指针来调试此问题。
间歇性超时异常 ( System.TimeoutException
( 是暂时性异常,是可以接受的。根据文档,您应该为任何暂时性异常添加重试逻辑。
除此之外,对于超时异常,您可能希望调整消息传递出厂设置(请参阅此处的文档(。
当客户端引发异常时,请更接近该异常。它将包含可能有所帮助的信息。将其与问题一起发布不会有什么坏处。