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); }
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); } }
/// <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 }); }
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); }
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); }
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); }
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); }
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); }
public void ArchivedSeriesInstanceUidTest() { JobCreator target = new JobCreator(); string expected = string.Empty; string actual; target.ArchivedSeriesInstanceUid = expected; actual = target.ArchivedSeriesInstanceUid; Assert.AreEqual(expected, actual); }
public void PeerTest() { JobCreator target = new JobCreator(); PeerNode expected = null; PeerNode actual; target.Peer = expected; actual = target.Peer; Assert.AreEqual(expected, actual); }
public void PrintSettingTest() { JobCreator target = new JobCreator(); PrintSetting expected = null; PrintSetting actual; target.PrintSetting = expected; actual = target.PrintSetting; Assert.AreEqual(expected, actual); }
public void PatientTest() { JobCreator target = new JobCreator(); Patient expected = null; Patient actual; target.Patient = expected; actual = target.Patient; Assert.AreEqual(expected, actual); }
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); }
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); }
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); }
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>(); }
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 }
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); }
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); }
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); } }
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); }
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); }
public void JobCreatorConstructorTest() { JobCreator target = new JobCreator(); Assert.IsNotNull(target); }