Esempio n. 1
0
        public void AddToQueue(string queue, string jobId)
        {
            IPersistentJobQueueProvider provider        = _queueProviders.GetProvider(queue);
            IPersistentJobQueue         persistentQueue = provider.GetJobQueue(_connection);

            QueueCommand(_ => persistentQueue.Enqueue(queue, jobId));
        }
Esempio n. 2
0
        public override void Commit()
        {
            if (Logger.IsDebugEnabled())
            {
                foreach (var tuple in _jobsToEnqueue)
                {
                    Logger.Debug($"Enqueuing Job ({tuple.Item2}), on queue: '{tuple.Item1}'\r\n");
                }

                Logger.Debug($"\r\nCommit:\r\n {string.Join("\r\n", _writeModels.Select(SerializeWriteModel))}");
            }

            var writeTasks = _jobsToEnqueue.Select(t =>
            {
                var queue = t.Item1;
                var jobId = t.Item2;
                IPersistentJobQueueProvider provider = _queueProviders.GetProvider(queue);
                IPersistentJobQueue persistentQueue  = provider.GetJobQueue(_connection);
                return(Task.Run(() => persistentQueue.Enqueue(queue, jobId)));
            }).ToList();

            if (_writeModels.Any())
            {
                var writeTask = _connection
                                .Database
                                .GetCollection <BsonDocument>(_connection.JobGraph.CollectionNamespace.CollectionName)
                                .BulkWriteAsync(_writeModels);

                writeTasks.Add(writeTask);
            }


            // make sure to run tasks on default task scheduler
            Task.Run(() => Task.WhenAll(writeTasks)).GetAwaiter().GetResult();
        }
        public override void AddToQueue(string queue, string jobId)
        {
            IPersistentJobQueueProvider provider        = _queueProviders.GetProvider(queue);
            IPersistentJobQueue         persistentQueue = provider.GetJobQueue(_database);

            QueueCommand(_ =>
            {
                persistentQueue.Enqueue(queue, jobId);
            });
        }
        public void AddToQueue(string queue, string jobId)
        {
            IPersistentJobQueueProvider provider        = _queueProviders.GetProvider(queue);
            IPersistentJobQueue         persistentQueue = provider.GetJobQueue(_connection);

            QueueCommand(_ =>
            {
                persistentQueue.Enqueue(queue, jobId);
                return(Task.FromResult(0));
            });
        }
        public long EnqueuedCount(string queue)
        {
            if (string.IsNullOrEmpty(queue))
            {
                throw new ArgumentNullException(nameof(queue));
            }

            IPersistentJobQueueProvider      provider      = storage.QueueProviders.GetProvider(queue);
            IPersistentJobQueueMonitoringApi monitoringApi = provider.GetJobQueueMonitoringApi();

            return(monitoringApi.GetEnqueuedCount(queue));
        }
Esempio n. 6
0
        /// <summary>
        /// Adds a job queue provider of the specified queues into the storage.
        /// </summary>
        /// <param name="configuration">
        /// The storage configuration to add the job queue provider to.
        /// </param>
        /// <param name="provider">
        /// A job queue provider to add.
        /// </param>
        /// <param name="queues">
        /// A list of provider queues.
        /// </param>
        /// <returns>
        /// A job storage configuration.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="configuration"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="provider"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="queues"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <paramref name="queues"/> is empty.
        /// </exception>
        public static IGlobalConfiguration <EFCoreStorage> UseQueueProvider(
            [NotNull] this IGlobalConfiguration <EFCoreStorage> configuration,
            [NotNull] IPersistentJobQueueProvider provider,
            [NotNull] IList <string> queues)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            configuration.Entry.RegisterProvider(provider, queues);
            return(configuration);
        }
        public void AddToQueue(string queue, string jobId)
        {
            if (string.IsNullOrEmpty(queue))
            {
                throw new ArgumentNullException(nameof(queue));
            }
            if (string.IsNullOrEmpty(jobId))
            {
                throw new ArgumentNullException(nameof(jobId));
            }

            IPersistentJobQueueProvider provider        = connection.QueueProviders.GetProvider(queue);
            IPersistentJobQueue         persistentQueue = provider.GetJobQueue();

            QueueCommand(() => persistentQueue.Enqueue(queue, jobId));
        }
        internal void RegisterProvider(IPersistentJobQueueProvider provider, IList <string> queues)
        {
            if (provider is null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (queues is null)
            {
                throw new ArgumentNullException(nameof(queues));
            }
            if (queues.Count == 0)
            {
                throw new ArgumentException(CoreStrings.ArgumentExceptionCollectionCannotBeEmpty,
                                            nameof(queues));
            }

            var providers = QueueProviders;

            foreach (var queue in queues)
            {
                providers[queue] = provider;
            }
        }