我们已经实施了我们需要处理传入批次的应用程序。例如,必须将一组特定对象类型的请求发送到特定的Web服务以进行处理
我们已经实施了以下代码段。如果同样存在任何陷阱,需要你的帮助/指导
var options = new ParallelOptions { MaxDegreeOfParallelism = 10 };
Parallel.ForEach(request, options, currentRequest =>
{
ProcessedRequest processedRequest = null;
try
{
currentRequest.DBSave = true;
processedRequest = CommunicateToService(currentRequest);
}
catch (Exception ex)
{
ExceptionManager.HandleException(ex);
}
});
在CommunicateToservice方法中,我们将调用该服务并传递请求并获取响应对象并将其保存到大约10 -15个表的MS SQL DB中。整个方法用AggregateException包装。
需要如何决定MaxDegreeOfParallelism值的输入。
答案 0 :(得分:2)
对于IO限制工作,没有简单的指导方针。您不知道最佳吞吐量的重点是什么。测试不同的值并测量哪一个最快。
您可能不应该将DOP设置得太高,因为这可能会使远程服务过载。