我有一个web api,必须在一秒钟内处理近200个请求。 web api应用程序的主要工作是:
最后一步需要完成而不会阻止答案。该应用程序需要快速回答,但同时它还必须将请求信息发送到azure事件中心。
我现在这样做:
public HttpResponseMessage Post(OurDataModel dataModel)
{
//1 - Get answer from cache
var resultData = companyFactory.GetData(dataModel);
//2 - sending data to Azure Event Hub
var asyncResult = Task.Run(() => new AzureEventHub().SendData(resultData));
.....
//3 return result
return Request.CreateResponse((HttpStatusCode)responseType.Ok, Json(resultData ).Content);
}
Azure发件人方法:
public async Task<int> SendData(MainModel data)
{
//Create event list --> result is List<EventData> events
...
EventHubClient eventHubClient = EventHubClient.CreateFromConnectionString(connString);
client.SendBatch(events);
client.Close();
return 1;//I dont know what im doing code :)
}
这个实现很好但实际上并不是很好。它应该做的是,毫不拖延地回答如此多的结果,但最近我从事件中心得到了这么多的错误。它说;
“操作未在分配的时间00:00:00内完成 对象sasl0。有关异常类型和正确的更多信息 异常处理..“
或
“任务被取消了。”
奇怪的是,它每2-3天发生一次,持续10-15分钟,然后又恢复正常。
我有两个问题:
我是否需要改进此实施(可能是因为它就像火和忘记)?为什么?怎么样?
为什么我会遇到这些错误?
我希望我清楚自己。谢谢。