并行Foreach webservice调用

时间:2013-11-25 12:01:35

标签: c# task-parallel-library plinq

我们已经实施了我们需要处理传入批次的应用程序。例如,必须将一组特定对象类型的请求发送到特定的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值的输入。

1 个答案:

答案 0 :(得分:2)

对于IO限制工作,没有简单的指导方针。您不知道最佳吞吐量的重点是什么。测试不同的值并测量哪一个最快。

您可能不应该将DOP设置得太高,因为这可能会使远程服务过载。