威尼斯人线上娱乐

官方网址文书档案翻译,官方文书档案翻译

21 4月 , 2019  

      

      

当学完第三课之后,你欢腾的意识,让jobs专门的学问起来是依然1贰分轻巧的。就算让jobs运营起来很简短,对于其实施的关键内容照旧必要明白的。它们是IJob接口中的Execute和JobDetails。

当学完第3课之后,你和颜悦色的觉察,让jobs职业起来是依然一定轻便的。即便让jobs运行起来比很粗略,对于其试行的显要内容依然供给知道的。它们是IJob接口中的Execute和JobDetails。

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

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

 

 

       

       

当你定义2个得以落成IJob接口的类的时候,你须要在里边达成实际供给试行的代码。Quartz.NET须要驾驭有关那代码的各个音信,那样 Quartz.NET本事像你指望的这样行事。那个细节是在JobDetail类中开始展览了描述,在上1节以及举办了简便易行的叙述。

当你定义3个贯彻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: 1陆px;”> 在您实例化好scheduler后。你能够运转、让它地处等候格局以及关闭它。请留意: style=”color: #ff0000;”>壹旦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 1个IJobDetail 实例,它只必要1个job实例就能开始展览运作。当scheduler试行job的时候,scheduler 会在调用Execute方法在此以前实例化1个job实例。 能实例化job的前提是job类中须要有个无参的构造函数。还有3个亟待注意的是,在job类中定义任何数据字段其实未有怎么太大的意义,因为在job的周转时期不会保留那么些多少字段。

请留心,在那里给scheduler 两个IJobDetail 实例,它只要求2个job实例就能拓展运维。当scheduler施行job的时候,scheduler 会在调用Execute方法从前实例化几个job实例。 能实例化job的前提是job类中供给有个无参的构造函数。还有一个须求小心的是,在job类中定义任何数据字段其实远非什么样太大的含义,因为在job的运维时期不会保留这一个数量字段。

 

 

来看那你可能会问,那笔者怎么样为一个job提供属性和配备新闻吗?并且这么能追踪保持job的推市场价格况吧?要回应那几个主题素材,关键要弄懂JobDataMap,它是JobDetail中的1有的。

见到那你恐怕会问,这自个儿怎样为二个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 // 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: 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的二个简单易行的例子:

威尼斯人线上娱乐 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: 16px;”>如若您盘算利用三个持久的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的一个大约的例子:

威尼斯人线上娱乐 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的四个实例的调解中积累了好些个“实例定义”
每3个都有本人的性情和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运营,将1个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实例”,大家指的是每3个实施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;”>您能够创设多个job类,并通过创制JobDetails的七个实例的调节中贮存了重重“实例定义”
每3个都有温馨的质量和JobDataMap –威尼斯人线上娱乐
再者他们都扩展到scheduler中

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

style=”font-family: ‘Microsoft YaHei’; font-size: 16px;”>譬如说,你可以创设3个落成所谓的“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类的暗许构造函数,然后尝试在合营的JobDataMap中的键名该类调用setter属性。您恐怕希望创立和睦的完毕的JobFactory来变成的事体,如让您的应用程序的IoC可能DI容器爆发/初阶化作业实例。

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

In
“Quartz speak”,
大家指的是各类存款和储蓄的JobDetail作为“job定义”或“的JobDetail实例”,我们指的是每2个实行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在下三遍施行(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”的实例能够在给定期间奉行的,但它能够与“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()方法成功做到后(未抛出10分),使得同一的job在下2遍实施(JobDetail)接收,而不是原来存款和储蓄的值的翻新的值。像DisallowConcurrentExecution属性,那适用于作业定义实例,而不是2个作业类的实例,纵然当时间调整制让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地图