在此期间使用wep abi管理大量请求并并行化其他作业

时间:2016-11-10 14:30:46

标签: asp.net-web-api async-await task-parallel-library backgroundworker azure-eventhub

我有一个web api,必须在一秒钟内处理近200个请求。 web api应用程序的主要工作是:

  • 获取请求
  • 从缓存系统(redis或其他)中找到答案
  • 返回结果
  • 将该请求发送到azure事件中心(用于进行一些小时计算)

最后一步需要完成而不会阻止答案。该应用程序需要快速回答,但同时它还必须将请求信息发送到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分钟,然后又恢复正常。

我有两个问题:

  1. 我是否需要改进此实施(可能是因为它就像火和忘记)?为什么?怎么样?

  2. 为什么我会遇到这些错误?

  3. 我希望我清楚自己。谢谢。

0 个答案:

没有答案