Exemple #1
0
        public override void AnnounceServer(
            [NotNull] string serverId,
            [NotNull] ServerContext context)
        {
            if (serverId is null)
            {
                throw new ArgumentNullException(nameof(serverId));
            }
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var timestamp = DateTime.UtcNow;

            var server = new HangfireServer
            {
                Id          = serverId,
                StartedAt   = timestamp,
                Heartbeat   = timestamp,
                WorkerCount = context.WorkerCount,
                Queues      = JobHelper.ToJson(context.Queues),
            };

            _storage.UseContextSavingChanges(dbContext =>
            {
                if (!dbContext.Set <HangfireServer>().Any(x => x.Id == serverId))
                {
                    dbContext.Add(server);
                }
                else
                {
                    dbContext.Entry(server).State = EntityState.Modified;
                }
            });
        }
Exemple #2
0
        public override void Commit()
        {
            ThrowIfDisposed();

            _storage.UseContextSavingChanges(context =>
            {
                while (_queue.Count > 0)
                {
                    var action = _queue.Dequeue();
                    action.Invoke(context);
                }
            });

            while (_afterCommitQueue.Count > 0)
            {
                var action = _afterCommitQueue.Dequeue();
                action.Invoke();
            }
        }