【美高梅开户网址】NET快捷上手第贰课,官网文书档案翻译

      

      

当学完第叁课之后,你欢欣的意识,让jobs职业起来是如故十分轻便的。就算让jobs运维起来很简短,对于其施行的基本点内容依旧供给精通的。它们是IJob接口中的Execute和JobDetails。

当学完第贰课之后,你喜欢的觉察,让jobs职业起来是依然一定轻便的。即便让jobs运转起来异常的粗略,对于其实践的重视内容照旧须要知道的。它们是IJob接口中的Execute和JobDetails。

style=”font-size: 16px;”> Quartz.NET飞快上手第3课(官方网站文书档案翻译)

style=”font-size: 16px;”> Quartz.NET急忙上手第三课(官方网站文书档案翻译)

 

 

       

       

当你定义3个贯彻IJob接口的类的时候,你供给在里面达成实际须要奉行的代码。Quartz.NET供给驾驭有关那代码的各样音讯,那样 Quartz.NET技术像你指望的那样行事。那么些细节是在JobDetail类中举办了描述,在上1节以及进行了大致的叙述。

当您定义2个落到实处IJob接口的类的时候,你须求在里边达成实际需求施行的代码。Quartz.NET需求精晓有关那代码的各个新闻,那样 Quartz.NET才具像您愿意的那么行事。那么些细节是在JobDetail类中开始展览了描述,在上一节以及开始展览了简短的叙说。

style=”font-size: 16px;”>初稿链接

style=”font-size: 16px;”>原稿链接

 

 

    

    

JobDetail由JobBuilder举办实例化的。JobBuilder容许开荒人员使用 fluent
interface.实行自定义JobDetail细节。

JobDetail由JobBuilder实行实例化的。JobBuilder容许开采人员使用 fluent
interface.实行自定义JobDetail细节。

 在您使用调治者( style=”color: #ff0000; background-color: #ffffff;”>scheduler)在此以前,你要求对它进行实例化(什么人能猜到那吗?)。在实例化scheduler时候,你须求使用 style=”color: #ff0000;”>ISchedulerFactory。

 在您采纳调解者( style=”color: #ff0000; background-color: #ffffff;”>scheduler)此前,你供给对它进行实例化(何人能猜到那吗?)。在实例化scheduler时候,你需求选择 style=”color: #ff0000;”>ISchedulerFactory。

 

 

 

 

让大家花点时间看Job的建制以及在Quartz.NET中的生命周期。在率先节中早就看到的例证让大家再看一次:

让大家花点时间看Job的编写制定以及在Quartz.NET中的生命周期。在首先节中壹度见到的例子让大家再看1遍:

style=”font-size: 16px;”> 在你实例化好scheduler后。你能够运行、让它地处等候情势以及关闭它。请小心: style=”color: #ff0000;”>壹旦scheduler关闭后,将无法再被重启使用。除非您在实例化新的scheduler。借使scheduler未有被运行触发器不会被运维(Triggers)(Ijob实例对象中的代码也不会被实践),触发器保持为等候状态

 

style=”font-size: 16px;”> 在您实例化好scheduler后。你能够运行、让它地处等候方式以及关闭它。请小心: style=”color: #ff0000;”>1旦scheduler关闭后,将无法再被重启使用。除非您在实例化新的scheduler。假设scheduler未有被运营触发器不会被运维(Triggers)(Ijob实例对象中的代码也不会被实施),触发器保持为等候情状

 

美高梅开户网址 1美高梅开户网址 2

美高梅开户网址 3美高梅开户网址 4

 

 

 1 // define the job and tie it to our HelloJob class
 2 IJobDetail job = JobBuilder.Create<HelloJob>()
 3     .WithIdentity("myJob", "group1")
 4     .Build();
 5 
 6 // Trigger the job to run now, and then every 40 seconds
 7 ITrigger trigger = TriggerBuilder.Create()
 8   .WithIdentity("myTrigger", "group1")
 9   .StartNow()
10   .WithSimpleSchedule(x => x
11       .WithIntervalInSeconds(40)
12       .RepeatForever())
13   .Build();
14   
15 sched.ScheduleJob(job, trigger);
 1 // define the job and tie it to our HelloJob class
 2 IJobDetail job = JobBuilder.Create<HelloJob>()
 3     .WithIdentity("myJob", "group1")
 4     .Build();
 5 
 6 // Trigger the job to run now, and then every 40 seconds
 7 ITrigger trigger = TriggerBuilder.Create()
 8   .WithIdentity("myTrigger", "group1")
 9   .StartNow()
10   .WithSimpleSchedule(x => x
11       .WithIntervalInSeconds(40)
12       .RepeatForever())
13   .Build();
14   
15 sched.ScheduleJob(job, trigger);
 1     // construct a scheduler factory
 2     ISchedulerFactory schedFact = new StdSchedulerFactory();
 3     
 4     // get a scheduler
 5     IScheduler sched = schedFact.GetScheduler();
 6     sched.Start();
 7     
 8     // define the job and tie it to our HelloJob class
 9    IJobDetail job = JobBuilder.Create<HelloJob>()
10         .WithIdentity("myJob", "group1")
11         .Build();
12   
13    // Trigger the job to run now, and then every 40 seconds
14    ITrigger trigger = TriggerBuilder.Create()
15       .WithIdentity("myTrigger", "group1")
16       .StartNow()
17       .WithSimpleSchedule(x => x
18           .WithIntervalInSeconds(40)
19           .RepeatForever())
20       .Build();
21       
22   sched.ScheduleJob(job, trigger);
 1     // construct a scheduler factory
 2     ISchedulerFactory schedFact = new StdSchedulerFactory();
 3     
 4     // get a scheduler
 5     IScheduler sched = schedFact.GetScheduler();
 6     sched.Start();
 7     
 8     // define the job and tie it to our HelloJob class
 9    IJobDetail job = JobBuilder.Create<HelloJob>()
10         .WithIdentity("myJob", "group1")
11         .Build();
12   
13    // Trigger the job to run now, and then every 40 seconds
14    ITrigger trigger = TriggerBuilder.Create()
15       .WithIdentity("myTrigger", "group1")
16       .StartNow()
17       .WithSimpleSchedule(x => x
18           .WithIntervalInSeconds(40)
19           .RepeatForever())
20       .Build();
21       
22   sched.ScheduleJob(job, trigger);

View Code

View Code

style=”font-size: 16px;”>如上面代码所示,让Quartz.NET工作起来想当轻易。在下壹节中,我们将会给出Jobsand Triggers的快速预览,那样您就会更精通的知晓地方这段代码。

style=”font-size: 1陆px;”>如下边代码所示,让Quartz.NET职业起来想当轻松。在下一节中,我们将会给出Jobsand Triggers的长足预览,那样您就会更精晓的通晓地点那段代码。

近年来定义一个HelloJob 如下所示:

今昔概念八个HelloJob 如下所示:

1 public class HelloJob : IJob
2 {
3     public void Execute(IJobExecutionContext context)
4     {
5         Console.WriteLine("HelloJob is executing.");
6     }
7 }
1 public class HelloJob : IJob
2 {
3     public void Execute(IJobExecutionContext context)
4     {
5         Console.WriteLine("HelloJob is executing.");
6     }
7 }

请留心,在此处给scheduler 一个IJobDetail 实例,它只需求多少个job实例就能进行运维。当scheduler实践job的时候,scheduler 会在调用Execute方法此前实例化三个job实例。 能实例化job的前提是job类中须求有个无参的构造函数。还有二个亟需注意的是,在job类中定义任何数据字段其实未有怎么太大的意思,因为在job的运作时期不会保留这一个数据字段。

请小心,在此处给scheduler 多少个IJobDetail 实例,它只供给3个job实例就能开始展览运营。当scheduler试行job的时候,scheduler 会在调用Execute方法此前实例化叁个job实例。 能实例化job的前提是job类中需求有个无参的构造函数。还有一个需求注意的是,在job类中定义任何数据字段其实并未什么太大的含义,因为在job的运作时期不会保留那么些数量字段。

 

 

观察那你只怕会问,那自个儿什么为二个job提供属性和安插音讯呢?并且这么能追踪保持job的实践意况吧?要应对这几个标题,关键要弄懂JobDataMap,它是JobDetail中的壹局部。

【美高梅开户网址】NET快捷上手第贰课,官网文书档案翻译。观察那你只怕会问,那自身哪些为三个job提供属性和配置音讯呢?并且这么能追踪保持job的推市价况呢?要回应那一个难点,关键要弄懂JobDataMap,它是JobDetail中的1局地。

 

 

JobDataMap

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>JobDataMap中可用于容纳任何数据的您愿意提供给job实例在实行时(可体系化)的靶子。JobDataMap完结了IDictionary接口,并为其增多了壹部分用于存储和查找基本类型的多寡的实用方法。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下面是JobDataMap 神速上手代码,在增多job到scheduler从前先为JobDataMap增多一些数据 :

1 // define the job and tie it to our DumbJob class
2 IJobDetail job = JobBuilder.Create<DumbJob>()
3     .WithIdentity("myJob", "group1") // name "myJob", group "group1"
4     .UsingJobData("jobSays", "Hello World!")
5     .UsingJobData("myFloatValue", 3.141f)
6     .Build();

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下边是从施行的job中拿走JobDataMap 数据

 1 Getting Values from a JobDataMap
 2 public class DumbJob : IJob
 3 {
 4     public void Execute(JobExecutionContext context)
 5     {
 6       JobKey key = context.JobDetail.Key;
 7 
 8       JobDataMap dataMap = context.JobDetail.JobDataMap;
 9 
10       string jobSays = dataMap.GetString("jobSays");
11       float myFloatValue = dataMap.GetFloat("myFloatValue");
12 
13       Console.Error.WriteLine("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
14     }
15 }

style=”font-family: ‘Microsoft YaHei’; font-size: 1陆px;”>若是你希图利用1个持久的JobStore (JobStore 将要JobStore 部分举行研商)你应有关爱就要JobDataMap放些什么。因为它会被系列化,所以更易于产生版本难题。在规范的本子中是高枕无忧的,除外,任什么人都足以转移你的实体类。所以只能关心包容性会被磨损的情状。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 1陆px;”>所以你能够把AdoJobStore
and
JobDataMap 放进map中,仅包括着原始函数与字符串数据,由此排除了连串化的各样难题。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>由于Quartz暗中同意JobFactory会再job实例化的时候去实例那几个带有set属性的,所以当您增多富含set访问的习性的时候会在JobDataMap中创造对应的key将其保存。那样就绝不开展显示区提醒在execute方法措施中展开映射。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>Trigger也有其有关的JobDataMap。当您须要七个Trigger实行调解和重复scheduler 那是格外实用的。每一种Trigger是独立的,并且必要你独自输入配置音信。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 1陆px;”>JobDataMap 将JobExecutionContext 作为job实行时候的上下文。它在那之中包括了JobDataMap 和Trigger并且覆盖前面同样的值。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下边是缘于JobExecutionContext获取数据的功课施行进程中集结的JobDataMap的二个差不多的例子:

美高梅开户网址 5美高梅开户网址 6

 1 public class DumbJob : IJob
 2 {
 3     public void Execute(IJobExecutionContext context)
 4     {
 5         JobKey key = context.JobDetail.Key;
 6 
 7         JobDataMap dataMap = context.MergedJobDataMap;  // Note the difference from the previous example
 8 
 9         string jobSays = dataMap.GetString("jobSays");
10         float myFloatValue = dataMap.GetFloat("myFloatValue");
11         IList<DateTimeOffset> state = (IList<DateTimeOffset>) dataMap["myStateData"];
12         state.Add(DateTimeOffset.UtcNow);
13 
14         Console.Error.WriteLine("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
15     }
16 }

View Code

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>要么,若是您想凭仗的JobFactory“注入”数据映射值到你的类,它可能看起来像那么些:

美高梅开户网址 7美高梅开户网址 8

 1 public class DumbJob : IJob
 2 {
 3     public string JobSays { private get; set; }
 4     public float FloatValue { private get; set; }
 5       
 6     public void Execute(IJobExecutionContext context)
 7     {
 8         JobKey key = context.JobDetail.Key;
 9 
10         JobDataMap dataMap = context.MergedJobDataMap;  // Note the difference from the previous example
11 
12         IList<DateTimeOffset> state = (IList<DateTimeOffset>) dataMap["myStateData"];
13         state.Add(DateTimeOffset.UtcNow);
14 
15         Console.Error.WriteLine("Instance " + key + " of DumbJob says: " + JobSays + ", and val is: " + FloatValue);
16     }
17 }

View Code

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>您会注意到类的全套代码较长,但在execute()方法的代码是干净。人们还足以争辨说,即便代码越长,它实际花了越来越少的编码,假若程序猿的IDE用于自动生成的习性,而不用手工业编写制定单独的调用从JobDataMap中检索值。那是您的采取。

JobDataMap

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>JobDataMap中可用以容纳任何数据的你希望提要求job实例在进行时(可体系化)的目标。JobDataMap达成了IDictionary接口,并为其增添了有的用以存储和寻觅基本类型的数额的实用方法。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下面是JobDataMap 快速上手代码,在加多job到scheduler从前先为JobDataMap加多一些数据 :

1 // define the job and tie it to our DumbJob class
2 IJobDetail job = JobBuilder.Create<DumbJob>()
3     .WithIdentity("myJob", "group1") // name "myJob", group "group1"
4     .UsingJobData("jobSays", "Hello World!")
5     .UsingJobData("myFloatValue", 3.141f)
6     .Build();

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下边是从施行的job中获取JobDataMap 数据

 1 Getting Values from a JobDataMap
 2 public class DumbJob : IJob
 3 {
 4     public void Execute(JobExecutionContext context)
 5     {
 6       JobKey key = context.JobDetail.Key;
 7 
 8       JobDataMap dataMap = context.JobDetail.JobDataMap;
 9 
10       string jobSays = dataMap.GetString("jobSays");
11       float myFloatValue = dataMap.GetFloat("myFloatValue");
12 
13       Console.Error.WriteLine("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
14     }
15 }

style=”font-family: ‘Microsoft YaHei’; font-size: 1陆px;”>假使您妄想选用2个水滴石穿的JobStore (JobStore 将要JobStore 部分进行研商)你应该关注将要JobDataMap放些什么。因为它会被体系化,所以更便于生出版本难点。在专门的工作的版本中是安全的,除此而外,任什么人都得以更动您的实体类。所以不得不关切包容性会被毁掉的状态。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>所以你能够把AdoJobStore
and
JobDataMap 放进map中,仅包括着原始函数与字符串数据,因而解除了体系化的各类主题材料。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 1陆px;”>由于Quartz暗许JobFactory会再job实例化的时候去实例这2个含有set属性的,所以当您增多富含set访问的性质的时候会在JobDataMap中成立对应的key将其保存。那样就无须实行展现区提醒在execute方法措施中实行映射。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>Trigger也有其有关的JobDataMap。当你要求多少个Trigger进行调治和另行scheduler 那是尤其实惠的。每一种Trigger是独立的,并且必要您独自输入配置消息。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>JobDataMap 将JobExecutionContext 作为job实践时候的上下文。它个中富含了JobDataMap 和Trigger并且覆盖后面同样的值。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下边是根源JobExecutionContext获取数据的作业实施进程中会集的JobDataMap的多少个归纳的事例:

美高梅开户网址 9美高梅开户网址 10

 1 public class DumbJob : IJob
 2 {
 3     public void Execute(IJobExecutionContext context)
 4     {
 5         JobKey key = context.JobDetail.Key;
 6 
 7         JobDataMap dataMap = context.MergedJobDataMap;  // Note the difference from the previous example
 8 
 9         string jobSays = dataMap.GetString("jobSays");
10         float myFloatValue = dataMap.GetFloat("myFloatValue");
11         IList<DateTimeOffset> state = (IList<DateTimeOffset>) dataMap["myStateData"];
12         state.Add(DateTimeOffset.UtcNow);
13 
14         Console.Error.WriteLine("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
15     }
16 }

View Code

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>抑或,借使您想依靠的JobFactory“注入”数据映射值到你的类,它只怕看起来像那么些:

美高梅开户网址 11美高梅开户网址 12

 1 public class DumbJob : IJob
 2 {
 3     public string JobSays { private get; set; }
 4     public float FloatValue { private get; set; }
 5       
 6     public void Execute(IJobExecutionContext context)
 7     {
 8         JobKey key = context.JobDetail.Key;
 9 
10         JobDataMap dataMap = context.MergedJobDataMap;  // Note the difference from the previous example
11 
12         IList<DateTimeOffset> state = (IList<DateTimeOffset>) dataMap["myStateData"];
13         state.Add(DateTimeOffset.UtcNow);
14 
15         Console.Error.WriteLine("Instance " + key + " of DumbJob says: " + JobSays + ", and val is: " + FloatValue);
16     }
17 }

View Code

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>您会小心到类的上上下下代码较长,但在execute()方法的代码是深透。人们还足以冲突说,即便代码越长,它实质上花了越来越少的编码,假若技术员的IDE用于自动生成的属性,而不要手工编制单独的调用从JobDataMap中检索值。那是你的选项。

Job “Instances”

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>有的是用户消费时间是困惑终归是何许构成了“Job实例”。大家会尽力讲精通那里,上边关于的办事情景和并发性的局部。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>您能够创建多少个job类,并通过创制JobDetails的八个实例的调整中贮存了多数“实例定义”
每一个都有温馨的质量和JobDataMap –
而且她们都扩充到scheduler中

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>举个例子说,你能够创制贰个落实所谓的“SalesReportJob”的IJob接口的类。那个job大概会被编码到梦想发送给它(通过JobDataMap中)来内定发售报告应基于发售人员的真名参数。然后它们得以创设三个概念的job(JobDetails),如“SalesReportForJoe”和“SalesReportFor迈克”具有“乔joe”和“迈克”在对应JobDataMaps作为输入到各自的job钦点。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>当Trigger运行,将1个JobDetail(实例定义),它会被自动加载,和job类是指通过对调整陈设的JobFactory实例化。暗中同意的JobFactory只是调用使用Activator.CreateInstance
调用job类的默许构造函数,然后尝试在10分的JobDataMap中的键名该类调用setter属性。您恐怕希望创制和煦的达成的JobFactory来产生的业务,如让您的应用程序的IoC可能DI容器发生/开始化作业实例。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

In
“Quartz speak”,
大家指的是种种存款和储蓄的JobDetail作为“job定义”或“的JobDetail实例”,我们指的是每一个奉行job作为“job实例”或“job定义实例”。平时,假设大家只是用这一个词的“job”,我们指的是1个名叫定义或JobDetail等。当大家指的是类达成job接口,大家日常应用的术语“job
type”。

Job “Instances”

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>无数用户消费时间是纳闷究竟是哪些构成了“Job实例”。咱们会不遗余力讲明白那里,下边关于的办事意况和并发性的壹对。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>你能够创设2个job类,并因而创造JobDetails的多少个实例的调解中蕴藏了过多“实例定义”
每二个都有友好的品质和JobDataMap –
而且她们都加多到scheduler中

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>诸如,你能够成立三个落到实处所谓的“SalesReportJob”的IJob接口的类。那些job或者会被编码到梦想发送给它(通过JobDataMap中)来钦点贩卖报告应依据发卖人士的人名参数。然后它们能够成立八个概念的job(JobDetails),如“SalesReportForJoe”和“SalesReportFor迈克”具备“乔joe”和“Mike”在相应JobDataMaps作为输入到个别的job内定。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>当Trigger运转,将贰个JobDetail(实例定义),它会被电动加载,和job类是指通过对调整安顿的JobFactory实例化。暗中同意的JobFactory只是调用使用Activator.CreateInstance
调用job类的暗中同意构造函数,然后尝试在协作的JobDataMap中的键名该类调用setter属性。您也许希望成立本身的得以达成的JobFactory来变成的业务,如让你的应用程序的IoC也许DI容器产生/伊始化作业实例。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

In
“Quartz speak”,
大家指的是各种存款和储蓄的JobDetail作为“job定义”或“的JobDetail实例”,大家指的是每二个实行job作为“job实例”或“job定义实例”。通常,如若大家只是用这些词的“job”,大家指的是三个名叫定义或JobDetail等。当大家指的是类达成job接口,我们平日应用的术语“job
type”。

Job State and Concurrency

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>后天有1部分有关Job的境况数据(aka
JobDataMap)和并发性附加表达。能够天剑组合天性到您的job类上,来震慑Quartz’的作为。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>DisallowConcurrentExecution增多到Job类,告诉Quartz不施行给定的job定义的五个实例(便是指给定的job类)并发的质量。注意那在那之中的所说,必须小心使用。在上1节的例子中,借使“SalesReportJob”有那么些天性,比唯有2个“SalesReportForJoe”的实例能够在加以时间试行的,但它能够与“SalesReportFor迈克”的1个实例,同时施行。约束是依据一个实例定义(JobDetail等),而不是在专业类的实例。但是,它(quartz的安排),决定对类本人指引的属性,因为它调节对类实行什么举行编写翻译。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>PersistJobDataAfterExecution是能够被加多到Job类,告诉quartz更新JobDetail的JobDataMap存款和储蓄的别本属性在execute()方法成功做到后(未抛出13分),使得同样的job在下3遍奉行(JobDetail)接收,而不是原来存款和储蓄的值的翻新的值。像DisallowConcurrentExecution属性,那适用于作业定义实例,而不是3个作业类的实例,即便当时间调控制让job类指点的属性,因为它往往使对类是怎么编码的出入(如’有气象’将需求显式地“精通”的试行办法中的代码)。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>比如应用PersistJobDataAfterExecution属性,你应当认真思量也利用DisallowConcurrentExecution属性,防止止留下怎么样数据时,同样的job(JobDetail)的三个实例并发实施存款和储蓄只怕的模糊(竞争条件)

Job State and Concurrency

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>今后有部分关于Job的事态数据(aka
JobDataMap)和并发性附加表达。能够天剑组合特性到您的job类上,来影响Quartz’的行为。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>DisallowConcurrentExecution加多到Job类,告诉Quartz不推行给定的job定义的多少个实例(就是指给定的job类)并发的属性。注意那之中的所说,必须小心使用。在上1节的事例中,借使“SalesReportJob”有其1本性,比唯有1个“SalesReportForJoe”的实例能够在加以时间执行的,但它能够与“SalesReportFor迈克”的二个实例,同时实行。约束是基于3个实例定义(JobDetail等),而不是在工作类的实例。不过,它(quartz的设计),决定对类本人指点的性子,因为它决定对类举办怎么着实行编写翻译。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>PersistJobDataAfterExecution是能够被增加到Job类,告诉quartz更新JobDetail的JobDataMap存款和储蓄的别本属性在execute()方法成功落成后(未抛出万分),使得同样的job在下一遍实行(JobDetail)接收,而不是原本存款和储蓄的值的立异的值。像DisallowConcurrentExecution属性,那适用于作业定义实例,而不是一个作业类的实例,即便当时间调控制让job类指点的质量,因为它往往使对类是怎么着编码的差异(如’有事态’将要求显式地“领悟”的实行措施中的代码)。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

lang=”EN-US”>就算利用PersistJobDataAfterExecution属性,你应该认真思量也采取DisallowConcurrentExecution属性,防止止留下如何数据时,一样的job(JobDetail)的多个实例并发施行存款和储蓄可能的混淆(竞争规则)

Other Attributes Of Jobs

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下边是可用于通过JobDetail等目的的job实例来定义的任何品质的差不多总括:

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>持久性


假若job是不行持久的,它会活动从调治中去除,壹旦不再有与之辅车相依的任何活动的触发器。换句话说,非持久job具备二个寿命由其触发的留存的限制。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>可恢复生机性


举例作业“须要复苏”,它是在调解的“硬关闭”的岁月实践(即它崩溃中运作的长河中,或在机器关闭),然后重新推行业调解程序重新起头。在那种气象下,JobExecutionContext.Recovering属性将赶回真。

Other Attributes Of Jobs

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>下边是可用于通过JobDetail等指标的job实例来定义的任何品质的简要总计:

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”> 

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>持久性


假若job是不足持久的,它会自行从调整中剔除,1旦不再有与之相关的其余活动的触发器。换句话说,非持久job具有3个寿命由其触发的存在的界定。

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>可恢复生机性


假诺作业“须要复苏”,它是在调整的“硬关闭”的时日实施(即它崩溃中运作的进度中,或在机器关闭),然后再一次施行业调整程序重新早先。在那种情景下,JobExecutionContext.Recovering属性将重返真。

美高梅开户网址,JobExecutionException

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>最终,大家供给报告你的IJob.Execute(..)方法的片段细节。你应当从实行措施抛出的唯一项目是JobExecutionException。正因为那样,你习感到常应该换execute方法的全体内容以’的try-catch“块。你也应该花一些时日看的JobExecutionException的文档,你的干活能够用它来提供调治各个指令为您想怎么至极举行管理。

JobExecutionException

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>最后,我们需求报告您的IJob.Execute(..)方法的片段细节。你应当从实行情势抛出的绝无仅有项目是JobExecutionException。正因为那样,你平凡应该换execute方法的整体内容以’的try-catch“块。你也应该花一些时辰看的JobExecutionException的文书档案,你的行事得以用它来提供调解各个吩咐为您想怎么至极实行拍卖。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图