Пример #1
0
        private async Task PollJobs(ITargetBlock <IJob> input, CancellationToken cancellationToken)
        {
            while (!source.IsCancellationRequested)
            {
                var currentJobs = Thread.VolatileRead(ref currentJobsActive);
                if (currentJobs < thresholdJobsActivation)
                {
                    var jobCount = maxJobsActive - currentJobs;
                    activateJobsRequest.MaxJobsToActivate = jobCount;

                    try
                    {
                        await jobActivator.SendActivateRequest(activateJobsRequest,
                                                               async jobsResponse => await HandleActivationResponse(input, jobsResponse, jobCount),
                                                               null,
                                                               cancellationToken);
                    }
                    catch (RpcException rpcException)
                    {
                        LogRpcException(rpcException);
                        await Task.Delay(pollInterval, cancellationToken);
                    }
                }
                else
                {
                    await Task.Delay(pollInterval, cancellationToken);
                }
            }
        }
Пример #2
0
        private async Task PollJobs(CancellationToken cancellationToken)
        {
            var jobCount = maxJobsActive - workItems.Count;

            activeRequest.MaxJobsToActivate = jobCount;

            var response = await activator.SendActivateRequest(activeRequest, cancellationToken);

            foreach (var job in response.Jobs)
            {
                workItems.Enqueue(job);
            }
        }