NET飞快上手第二课,官方网址文书档案翻译

      

      

当学完第2课之后,你欢跃的觉察,让jobs工作起来是照旧一定轻松的。纵然让jobs运营起来非常粗大略,对于其实践的重要内容依然要求了解的。它们是IJob接口中的Execute和JobDetails。

当学完第三课之后,你开心的意识,让jobs职业起来是依旧拾分轻便的。尽管让jobs运维起来很简短,对于其施行的关键内容如故供给驾驭的。它们是IJob接口中的Execute和JobDetails。

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

style=”font-size: 16px;”> NET飞快上手第二课,官方网址文书档案翻译。Quartz.NET赶快上手第一课(官方网址文书档案翻译)

 

 

       

       

当您定义2个兑现IJob接口的类的时候,你需求在里边达成实际须求实行的代码。Quartz.NET要求驾驭关于那代码的各类音讯,那样 Quartz.NET技能像您期望的那么行事。这么些细节是在JobDetail类中张开了描述,在上1节以及开始展览了轻易的叙述。

当你定义贰个贯彻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中的生命周期。在首先节中早已观看的例子让我们再看3次:

让大家花点时间看Job的体制以及在Quartz.NET中的生命周期。在首先节中早就观察标事例让大家再看3回:

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

 

style=”font-size: 1六px;”> 在您实例化好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工作起来想当不难。在下1节中,大家将会给出Jobsand Triggers的火速预览,那样你就会更清楚的明白地点这段代码。

style=”font-size: 1陆px;”>如下边代码所示,让Quartz.NET职业起来想当简单。在下一节中,大家将会给出Jobsand Triggers的登时预览,那样你就会更了然的知晓地点那段代码。

今后概念2个HelloJob 如下所示:

现行反革命概念3个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 1个IJobDetail 实例,它只须求一个job实例就能拓展运维。当scheduler试行job的时候,scheduler 会在调用Execute方法在此以前实例化七个job实例。 能实例化job的前提是job类中需求有个无参的构造函数。还有贰个急需专注的是,在job类中定义任何数据字段其实并没有啥太大的含义,因为在job的运作时期不会保留那几个数量字段。

请留心,在那边给scheduler 三个IJobDetail 实例,它只须要贰个job实例就能进行运行。当scheduler推行job的时候,scheduler 会在调用Execute方法在此以前实例化八个job实例。 能实例化job的前提是job类中要求有个无参的构造函数。还有1个索要专注的是,在job类中定义任何数据字段其实未有怎么太大的意义,因为在job的运作时期不会保留那几个数据字段。

 

 

总的来看那你大概会问,那自身怎么着为3个job提供属性和布局消息吗?并且这么能追踪保持job的实市场价格况吧?要回答那一个标题,关键要弄懂JobDataMap,它是JobDetail中的1某个。

总的来看那你也许会问,那我何以为2个job提供属性和安插音信吗?并且这么能追踪保持job的实市场价格况呢?要回应这一个难点,关键要弄懂JobDataMap,它是JobDetail中的一有个别。

 

 

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些数据 :

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: 1陆px;”>所以你能够把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: 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的1个简练的事例:

亚洲必赢官网 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;”>若是您准备利用一个持久的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: 1陆px;”>由于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 那是1贰分实惠的。每一个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的八个实例的调度中贮存了大多“实例定义”
每2个都有协调的习性和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”和“SalesReportForMike”具备“乔joe”和“迈克”在对应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 “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”和“Mike”在相应JobDataMaps作为输入到各自的job内定。

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

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>当Trigger运行,将3个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;”>现行有部分有关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”有那些天性,比唯有三个“SalesReportForJoe”的实例能够在给定期期试行的,但它能够与“SalesReportFor迈克”的三个实例,同时实践。约束是依照一个实例定义(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在下1次推行(JobDetail)接收,而不是原本存款和储蓄的值的立异的值。像DisallowConcurrentExecution属性,那适用于作业定义实例,而不是两个作业类的实例,即便当时间调控制让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”有其三个性,比只有贰个“SalesReportForJoe”的实例能够在加以时间实行的,但它能够与“SalesReportForMike”的三个实例,同时实行。约束是基于一个实例定义(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在下壹遍实行(JobDetail)接收,而不是原来存储的值的翻新的值。像DisallowConcurrentExecution属性,那适用于作业定义实例,而不是1个作业类的实例,尽管当时间调控制让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具有1个寿命由其触发的留存的限量。

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


1经作业“须要复苏”,它是在调度的“硬关闭”的时间实行(即它崩溃中运维的进度中,或在机械关闭),然后重新实施业调度程序重新开头。在那种景色下,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具备二个寿命由其触发的留存的限定。

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“块。你也应该花1些光阴看的JobExecutionException的文书档案,你的干活得以用它来提供调度各样指令为你想怎么卓殊举行处理。

JobExecutionException

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>最终,我们须要告诉你的IJob.Execute(..)方法的1些细节。你应该从实行措施抛出的唯一项目是JobExecutionException。正因为如此,你平常应该换execute方法的全体内容以’的try-catch“块。你也应有花壹些时刻看的JobExecutionException的文书档案,你的行事能够用它来提供调度各个指令为您想怎么十分举行处理。

网站地图xml地图