Esempio n. 1
0
        public override void SetJobState([NotNull] string jobId, [NotNull] IState state)
        {
            if (jobId == null)
            {
                throw new ArgumentNullException(nameof(jobId));
            }
            if (state == null)
            {
                throw new ArgumentNullException(nameof(state));
            }

            _transaction.HashSetAsync(_storage.GetRedisKey($"job:{jobId}"), "State", state.Name);
            _transaction.KeyDeleteAsync(_storage.GetRedisKey($"job:{jobId}:state"));

            var storedData = new Dictionary <string, string>(state.SerializeData())
            {
                { "State", state.Name }
            };

            if (state.Reason != null)
            {
                storedData.Add("Reason", state.Reason);
            }

            _transaction.HashSetAsync(_storage.GetRedisKey($"job:{jobId}:state"), storedData.ToHashEntries());

            AddJobState(jobId, state);
        }
Esempio n. 2
0
        public override string CreateExpiredJob(
            Job job,
            IDictionary <string, string> parameters,
            DateTime createdAt,
            TimeSpan expireIn)
        {
            var jobId = Guid.NewGuid().ToString();

            var invocationData = InvocationData.Serialize(job);

            // Do not modify the original parameters.
            var storedParameters = new Dictionary <string, string>(parameters);

            storedParameters.Add("Type", invocationData.Type);
            storedParameters.Add("Method", invocationData.Method);
            storedParameters.Add("ParameterTypes", invocationData.ParameterTypes);
            storedParameters.Add("Arguments", invocationData.Arguments);
            storedParameters.Add("CreatedAt", JobHelper.SerializeDateTime(createdAt));

            var transaction = Redis.CreateTransaction();

            transaction.HashSetAsync(
                string.Format(RedisStorage.Prefix + "job:{0}", jobId),
                storedParameters.ToHashEntries());

            transaction.KeyExpireAsync(
                string.Format(RedisStorage.Prefix + "job:{0}", jobId),
                expireIn);

            // TODO: check return value
            transaction.Execute();

            return(jobId);
        }
Esempio n. 3
0
        public override string CreateExpiredJob(
            [NotNull] Job job,
            [NotNull] IDictionary <string, string> parameters,
            DateTime createdAt,
            TimeSpan expireIn)
        {
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            var jobId = Guid.NewGuid().ToString();

            var invocationData = InvocationData.Serialize(job);

            // Do not modify the original parameters.
            var storedParameters = new Dictionary <string, string>(parameters)
            {
                { "Type", invocationData.Type },
                { "Method", invocationData.Method },
                { "ParameterTypes", invocationData.ParameterTypes },
                { "Arguments", invocationData.Arguments },
                { "CreatedAt", JobHelper.SerializeDateTime(createdAt) }
            };

            if (_storage.UseTransactions)
            {
                var transaction = Redis.CreateTransaction();

                transaction.HashSetAsync(_storage.GetRedisKey($"job:{jobId}"), storedParameters.ToHashEntries());
                transaction.KeyExpireAsync(_storage.GetRedisKey($"job:{jobId}"), expireIn);

                // TODO: check return value
                transaction.Execute();
            }
            else
            {
                Redis.HashSetAsync(_storage.GetRedisKey($"job:{jobId}"), storedParameters.ToHashEntries());
                Redis.KeyExpireAsync(_storage.GetRedisKey($"job:{jobId}"), expireIn);
            }

            return(jobId);
        }
Esempio n. 4
0
        public override void SetJobState(string jobId, IState state)
        {
            _transaction.HashSetAsync(
                RedisStorage.Prefix + string.Format("job:{0}", jobId),
                "State",
                state.Name);
            _transaction.KeyDeleteAsync(RedisStorage.Prefix + string.Format("job:{0}:state", jobId));

            var storedData = new Dictionary <string, string>(state.SerializeData());

            storedData.Add("State", state.Name);

            if (state.Reason != null)
            {
                storedData.Add("Reason", state.Reason);
            }
            _transaction.HashSetAsync(RedisStorage.Prefix + string.Format("job:{0}:state", jobId), storedData.ToHashEntries());

            AddJobState(jobId, state);
        }
        public void SetJobState(string jobId, IState state)
        {
            _transaction.HashSetAsync(
                String.Format(RedisStorage.Prefix + "job:{0}", jobId),
                "State",
                state.Name);
			_transaction.KeyDeleteAsync(String.Format(RedisStorage.Prefix + "job:{0}:state", jobId));

            var storedData = new Dictionary<string, string>(state.SerializeData());
            storedData.Add("State", state.Name);

            if (state.Reason != null)
            {
                storedData.Add("Reason", state.Reason);
            }
			_transaction.HashSetAsync(String.Format(RedisStorage.Prefix + "job:{0}:state", jobId),storedData.ToHashEntries());

            AddJobState(jobId, state);
        }
        public override string CreateExpiredJob(
            Job job,
            IDictionary<string, string> parameters,
            DateTime createdAt,
            TimeSpan expireIn)
        {
            var jobId = Guid.NewGuid().ToString();

            var invocationData = InvocationData.Serialize(job);

            // Do not modify the original parameters.
            var storedParameters = new Dictionary<string, string>(parameters);
            storedParameters.Add("Type", invocationData.Type);
            storedParameters.Add("Method", invocationData.Method);
            storedParameters.Add("ParameterTypes", invocationData.ParameterTypes);
            storedParameters.Add("Arguments", invocationData.Arguments);
            storedParameters.Add("CreatedAt", JobHelper.SerializeDateTime(createdAt));

            var transaction = Redis.CreateTransaction();

            transaction.HashSetAsync(
                    string.Format(RedisStorage.Prefix + "job:{0}", jobId),
                    storedParameters.ToHashEntries());

            transaction.KeyExpireAsync(
                string.Format(RedisStorage.Prefix + "job:{0}", jobId),
                expireIn);

            // TODO: check return value
            transaction.Execute();

            return jobId;
        }