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); }
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); }