Пример #1
0
        public void Enqueue(SessionWrapper session, string queue, string jobId)
        {
            var converter = StringToInt32Converter.Convert(jobId);

            if (!converter.Valid)
            {
                return;
            }
            session.Insert(new _JobQueue
            {
                Job   = session.Query <_Job>().SingleOrDefault(i => i.Id == converter.Value),
                Queue = queue
            });
            session.Flush();
            Logger.InfoFormat("Enqueued JobId={0} Queue={1}", jobId, queue);
        }
        public JobDetailsDto JobDetails(string jobId)
        {
            var converter = StringToInt32Converter.Convert(jobId);

            if (!converter.Valid)
            {
                return(null);
            }

            return(_storage.UseStatelessTransaction(session =>
            {
                var job = session.Query <_Job>().SingleOrDefault(i => i.Id == converter.Value);
                if (job == null)
                {
                    return null;
                }

                var parameters = job.Parameters.ToDictionary(x => x.Name, x => x.Value);
                var history =
                    job.History.OrderByDescending(i => i.Id)
                    .Select(jobState => new StateHistoryDto
                {
                    StateName = jobState.Name,
                    CreatedAt = jobState.CreatedAt,
                    Reason = jobState.Reason,
                    Data = new Dictionary <string, string>(
                        SerializationHelper.Deserialize <Dictionary <string, string> >(jobState.Data),
                        StringComparer.OrdinalIgnoreCase)
                })
                    .ToList();

                return new JobDetailsDto
                {
                    CreatedAt = job.CreatedAt,
                    ExpireAt = job.ExpireAt,
                    Job = DeserializeJob(job.InvocationData, job.Arguments),
                    History = history,
                    Properties = parameters
                };
            }));
        }