Ejemplo n.º 1
0
        public Guid AddJob <TJob>(Expression <Action <TJob> > jobExpression, RetryParameters retryParameters = null, DateTimeOffset?executionTime = null, string queueName = "default")
        {
            var jobInfo = JobCreator.Create <TJob>(jobExpression);
            var newJob  = new OddJobWithMetaAndStorageData()
            {
                JobId           = Guid.NewGuid(),
                JobArgs         = jobInfo.JobArgs,
                MethodName      = jobInfo.MethodName,
                RetryParameters = retryParameters,
                TypeExecutedOn  = jobInfo.TypeExecutedOn,
                CreatedOn       = DateTime.Now,
                Status          = JobStates.New
            };

            if (jobStore.ContainsKey(queueName) == false)
            {
                lock (dictionaryLock)
                {
                    jobStore.GetOrAdd(queueName, new List <OddJobWithMetaAndStorageData>());
                }
            }
            lock (jobLock)
            {
                jobStore[queueName].Add(newJob);
            }
            return(newJob.JobId);
        }
Ejemplo n.º 2
0
        public static JobCreator CreateJobCreator()
        {
            try
            {
                Logger.LogFuncUp();

                var jobCreator = new JobCreator();

                jobCreator.Patient = CurrentPatient;

                //打印节点
                jobCreator.Peer = CurrentPeer;

                //打印设置
                jobCreator.PrintSetting = PrintSetting;

                //填充Film box
                jobCreator.FilmBoxList = filmBoxList;
                Logger.LogFuncDown();

                return(jobCreator);
            }
            catch (Exception ex)
            {
                Logger.LogFuncException(ex.Message + ex.StackTrace);
                return(null);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates a Serialized Job Definition.
        /// Complex Parameters are stored as JSON strings,
        /// And Type Information is stored in a nonversioned format by default.
        /// </summary>
        /// <typeparam name="T">The type of the job to execute.</typeparam>
        /// <param name="jobExpression">The job Expression</param>
        /// <param name="retryParameters">The retry parameters to use, if any.</param>
        /// <param name="executionTime">A time to schedule; use this to schedule jobs in future</param>
        /// <param name="queueName">The Queue to resolve</param>
        /// <param name="typeNameSerializer">To change the default behavior (nonversioned types) specify a different <see cref="ITypeNameSerializer"/> here.</param>
        /// <returns>A wire-safe Serializable job definition.</returns>
        public static SerializableOddJob CreateJobDefinition <T>(Expression <Action <T> > jobExpression,
                                                                 RetryParameters retryParameters = null, DateTimeOffset?executionTime = null, string queueName = "default", ITypeNameSerializer typeNameSerializer = null)
        {
            var job   = JobCreator.Create(jobExpression);
            var mySer = typeNameSerializer ?? new UnversionedTypeSerializer();

            return(new SerializableOddJob()
            {
                JobId = job.JobId,
                MethodName = job.MethodName,
                JobArgs = job.JobArgs.Select((a, i) => new OddJobSerializedParameter()
                {
                    Ordinal = i,
                    Name = a.Name,
                    Value = Newtonsoft.Json.JsonConvert.SerializeObject(a.Value),
                    TypeName = mySer.GetTypeName(a.Value.GetType())
                }).ToArray(),
                TypeExecutedOn = mySer.GetTypeName(job.TypeExecutedOn),
                Status = job.Status,
                MethodGenericTypes = job.MethodGenericTypes.Select(q => mySer.GetTypeName(q)).ToArray(),
                RetryParameters = retryParameters ?? new RetryParameters(),
                ExecutionTime = executionTime,
                QueueName = queueName
            });
        }
Ejemplo n.º 4
0
        public void Can_Run_Jobs_With_No_Params()
        {
            var next  = JobCreator.Create <SampleJobNoParam>((j) => j.DoThing());
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
            Xunit.Assert.True(SampleJobNoParam.Called);
        }
Ejemplo n.º 5
0
        public void Can_Run_Jobs_With_Static_Method()
        {
            var next  = JobCreator.Create <SampleJobStaticMethod>((j) => SampleJobStaticMethod.DoThing());
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
            Xunit.Assert.True(SampleJobStaticMethod.Called);
        }
Ejemplo n.º 6
0
        public void Creator_Respects_StaticJob_Handling()
        {
            var next  = JobCreator.Create <StaticClassJob>((j) => SampleJobStaticClass.DoThing());
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
            Xunit.Assert.True(SampleJobStaticClass.Called);
        }
Ejemplo n.º 7
0
        public void Can_Run_Static_Method_On_Static_Class()
        {
            var next  = JobCreator.Create <object>((j) => SampleJobStaticClass.DoThing());
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
            Xunit.Assert.True(SampleJobStaticClass.Called);
        }
Ejemplo n.º 8
0
        public void FilmBoxListTest()
        {
            JobCreator target = new JobCreator();
            IList <FilmingPrintJob.Types.FilmBox.Builder> expected = null;
            IList <FilmingPrintJob.Types.FilmBox.Builder> actual;

            target.FilmBoxList = expected;
            actual             = target.FilmBoxList;
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 9
0
        public void ArchivedSeriesInstanceUidTest()
        {
            JobCreator target   = new JobCreator();
            string     expected = string.Empty;
            string     actual;

            target.ArchivedSeriesInstanceUid = expected;
            actual = target.ArchivedSeriesInstanceUid;
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 10
0
        public void PeerTest()
        {
            JobCreator target   = new JobCreator();
            PeerNode   expected = null;
            PeerNode   actual;

            target.Peer = expected;
            actual      = target.Peer;
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 11
0
        public void PrintSettingTest()
        {
            JobCreator   target   = new JobCreator();
            PrintSetting expected = null;
            PrintSetting actual;

            target.PrintSetting = expected;
            actual = target.PrintSetting;
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 12
0
        public void PatientTest()
        {
            JobCreator target   = new JobCreator();
            Patient    expected = null;
            Patient    actual;

            target.Patient = expected;
            actual         = target.Patient;
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 13
0
        public void Can_Run_Job_And_pass_parameters()
        {
            var myValue = new ClassTest()
            {
                classTestValue = TestConstants.classTestValue
            };
            var next  = JobCreator.Create <SampleJob>((j) => j.DoThing(TestConstants.derp, TestConstants.herp, myValue));
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
        }
Ejemplo n.º 14
0
        public void Can_Run_Job_With_Simple_Method_Calls()
        {
            var myValue = new ClassTest()
            {
                classTestValue = TestConstants.classTestValue
            };
            var next  = JobCreator.Create <SampleJob>((j) => j.DoThing(TestConstants.derp, int.Parse(TestConstants.herp.ToString()), myValue));
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
        }
Ejemplo n.º 15
0
        public void Can_Run_Jobs_With_Param_Type_Matching_And_Overloads()
        {
            var myValue = new ClassTest()
            {
                classTestValue = TestConstants.classTestValue
            };
            var next  = JobCreator.Create <SampleJob2>((j) => j.DoThing(TestConstants.derp, TestConstants.herp, myValue));
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
        }
Ejemplo n.º 16
0
        public void JobWorker_Returns_Failures_for_Failed_Jobs()
        {
            var actor   = Sys.ActorOf(Props.Create(() => new JobWorkerActor(new MockJobFailureExecutor())));
            var jobInfo = JobCreator.Create((MockJob m) => m.MockMethod());
            var jobData = new OddJobWithMetaAndStorageData()
            {
                Status = JobStates.New, JobArgs = jobInfo.JobArgs, JobId = Guid.NewGuid(), MethodName = jobInfo.MethodName, CreatedOn = DateTime.Now, QueueTime = DateTime.Now, TypeExecutedOn = jobInfo.TypeExecutedOn
            };

            actor.Tell(new ExecuteJobRequest(jobData));
            ExpectMsg <JobFailed>();
        }
Ejemplo n.º 17
0
        public IJob Reserve()
        {
            var multi = new MultiQueue(Client, RedisQueues);
            var item  = multi.Pop();

            if (item != null)
            {
                var queueName = GetQueueName(item.Item1);
                return(JobCreator.CreateJob(FailureService, this, item.Item2, queueName));
            }
            return(null);
        }
 private static void Load()
 {
     JobCreator.CreateJob <MailJob>(new JobInfo
     {
         JobName        = "MailJob",
         TriggerName    = "MainJobTrg",
         GroupName      = "MainJobGroup",
         DataParamters  = null,
         CronExpression = "paste here cronmaker time planning string"
     }, ref _scheduler);
     // Define job Daily , weekly and mounthly
 }
Ejemplo n.º 19
0
        public void Can_Run_Job_With_Arity_in_class_With_Arity()
        {
            var myvalue = new ClassTest()
            {
                classTestValue = TestConstants.classTestValue
            };
            var next = JobCreator.Create <SampleJobInGenericClass <string> >(j =>
                                                                             j.DoThing(TestConstants.derp, TestConstants.herp, myvalue));
            var jobEx = new DefaultJobExecutor(new DefaultContainerFactory());

            jobEx.ExecuteJob(next);
        }
Ejemplo n.º 20
0
        public void JobQueueManager_Can_Mark_Failure()
        {
            var testStore = new InMemoryTestStore();
            var actor     = Sys.ActorOf(Props.Create(() => new JobQueueLayerActor(new InMemoryTestStore())));
            var jobInfo   = JobCreator.Create((MockJob m) => m.MockMethod());
            var myGuid    = testStore.AddJob((MockJob m) => m.MockMethod(), null, null, "test");
            var ourJob    = InMemoryTestStore.jobPeeker["test"].FirstOrDefault(q => q.JobId == myGuid);

            actor.Tell(new MarkJobFailed(myGuid));
            System.Threading.SpinWait.SpinUntil(() => false, TimeSpan.FromSeconds(2));
            Xunit.Assert.Equal(JobStates.Failed, ourJob.Status);
        }
Ejemplo n.º 21
0
 private void SendToServiceBE()
 {
     try
     {
         if (!isPrint)
         {
             return;
         }
         JobCreator jobCreator = CardModel.CreateJobCreator();
         jobCreator.SendFilmingJobCommand(Containee.Main.GetCommunicationProxy());
     }catch (Exception ex)
     {
         Logger.LogFuncException(ex.Message + ex.StackTrace);
     }
 }
Ejemplo n.º 22
0
        public void JobQueueManager_Can_Mark_Retry()
        {
            var testStore   = new InMemoryTestStore();
            var actor       = Sys.ActorOf(Props.Create(() => new JobQueueLayerActor(new InMemoryTestStore())));
            var jobInfo     = JobCreator.Create((MockJob m) => m.MockMethod());
            var myGuid      = testStore.AddJob((MockJob m) => m.MockMethod(), new RetryParameters(1, TimeSpan.FromSeconds(20)), null, "test");
            var ourJob      = InMemoryTestStore.jobPeeker["test"].FirstOrDefault(q => q.JobId == myGuid);
            var attemptTime = DateTime.Now;

            actor.Tell(new MarkJobInRetryAndIncrement(myGuid, attemptTime));
            System.Threading.SpinWait.SpinUntil(() => false, TimeSpan.FromSeconds(2));
            Xunit.Assert.Equal(JobStates.Retry, ourJob.Status);
            Xunit.Assert.Equal(1, ourJob.RetryParameters.RetryCount);
            Xunit.Assert.Equal(attemptTime, ourJob.RetryParameters.LastAttempt);
        }
Ejemplo n.º 23
0
        public Guid AddJob <TJob>(Expression <Action <TJob> > jobExpression, RetryParameters retryParameters = null, DateTimeOffset?executionTime = null, string queueName = "default")
        {
            var jobData = JobCreator.Create(jobExpression);
            var toSer   = new FileSystemJobMetaData()
            {
                JobId              = Guid.NewGuid(),
                JobArgs            = jobData.JobArgs,
                MethodName         = jobData.MethodName,
                RetryParameters    = retryParameters ?? new RetryParameters(0, TimeSpan.FromSeconds(0), 0, null),
                TypeExecutedOn     = jobData.TypeExecutedOn,
                QueueName          = queueName,
                CreatedOn          = DateTime.Now,
                Status             = JobStates.New,
                MethodGenericTypes = jobData.MethodGenericTypes
            };

            WriteJobToQueue(toSer);
            return(toSer.JobId);
        }
Ejemplo n.º 24
0
        public void JobCreatorConstructorTest()
        {
            JobCreator target = new JobCreator();

            Assert.IsNotNull(target);
        }