Beispiel #1
0
        public TaskQueueWorker CreateWorker(ITaskQueueJobHandler handler, string groupName, string workerId)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler), $"{nameof(handler)} is null.");
            }

            if (string.IsNullOrEmpty(groupName))
            {
                throw new ArgumentException($"{nameof(groupName)} is null or empty.", nameof(groupName));
            }

            if (string.IsNullOrEmpty(workerId))
            {
                throw new ArgumentException($"{nameof(workerId)} is null or empty.", nameof(workerId));
            }

            ValidateName(groupName, "groupName");

            var worker = new TaskQueueWorker(
                _Subscriber.Value,
                handler,
                workerId,
                groupName,
                (w) => _WorkerList.Remove(w));

            _WorkerList.Add(worker);
            worker.Start();

            return(worker);
        }
Beispiel #2
0
        internal TaskQueueWorker(
            ISubscriber subscriber,
            ITaskQueueJobHandler handler,
            string workerId,
            string groupName,
            Action <TaskQueueWorker> onDispose)
        {
            _Subscriber = subscriber;
            _Handler    = handler;
            _WorkerId   = workerId;
            _GroupName  = groupName;
            _OnDispose  = onDispose;

            _InfoName         = TaskQueueManager.Current.GetFullInfoName(groupName);
            _WorkingQueueName = TaskQueueManager.Current.GetFullWorkingName(groupName, workerId);
        }