public ExternalTaskWorker(
            CamundaClient camundaClient,
            ExternalTaskWorkerInfo externalTaskWorkerInfo,
            WorkerSettings workerSettings)
        {
            _camundaClient          = camundaClient;
            _externalTaskWorkerInfo = externalTaskWorkerInfo;

            _pollingInterval = workerSettings.ExternalTaskSettings.PollingInterval;
            var lockDuration = workerSettings.ExternalTaskSettings.LockDuration;

            _maxDegreeOfParallelism = workerSettings.ExternalTaskSettings.MaxDegreeOfParallelism;
            var maxTasksToFetchAtOnce = workerSettings.ExternalTaskSettings.MaxTasksToFetchAtOnce;

            var topic = new FetchExternalTaskTopic(_externalTaskWorkerInfo.TopicName, lockDuration)
            {
                Variables = _externalTaskWorkerInfo.VariablesToFetch
            };

            _fetching = new FetchExternalTasks()
            {
                WorkerId    = _workerId,
                MaxTasks    = maxTasksToFetchAtOnce,
                UsePriority = true,
                Topics      = new List <FetchExternalTaskTopic>()
                {
                    topic
                }
            };
        }
Ejemplo n.º 2
0
        private static async Task AwaitNetExternalTaskSync()
        {
            FetchExternalTaskTopic topic = new FetchExternalTaskTopic("address-info", 10000);

            var topics = new System.Collections.Generic.List <FetchExternalTaskTopic>();

            topics.Add(topic);

            FetchExternalTasks t = new FetchExternalTasks()
            {
                WorkerId             = "postman",
                AsyncResponseTimeout = 30000,
                MaxTasks             = 3,
                Topics = topics
            };

            var et = await _client.ExternalTasks.FetchAndLock(t);

            foreach (var task in et)
            {
                Console.WriteLine(task.Id + " " + task.TopicName);
            }
        }
        private static Task <List <LockedExternalTask> > FetchAndLockTasks(string workerId, FetchExternalTaskTopic topic)
        {
            var fetchingQuery = new FetchExternalTasks
            {
                WorkerId    = workerId,
                MaxTasks    = _camundaSettings.FetchTaskCount,
                UsePriority = false,
                Topics      = new List <FetchExternalTaskTopic> {
                    topic
                }
            };

            return(_engineClient.Client().ExternalTasks.FetchAndLock(fetchingQuery));
        }