HTML5技术

使用mongodb作为Quartz.Net下的JobStore实现底层的持久化机制 - 一线码农(2)

字号+ 作者:H5之家 来源:H5之家 2017-06-26 13:00 我要评论( )

1 var properties = new NameValueCollection(); 2 properties[StdSchedulerFactory.PropertySchedulerInstanceName] = instanceName; ; 4 properties[StdSchedulerFactory.PropertyJobStoreType] = typeof (MongoD

1 var properties = new NameValueCollection(); 2 properties[StdSchedulerFactory.PropertySchedulerInstanceName] = instanceName; ; 4 properties[StdSchedulerFactory.PropertyJobStoreType] = typeof (MongoDbJobStore).AssemblyQualifiedName; properties[$] = ; properties[$] = ; scheduler = new StdSchedulerFactory(properties); 11 return scheduler.GetScheduler();

 

 <1>  PropertySchedulerInstanceName: 就是对Scheduler的Name进行的配置,大家可以根据情况定义一个简明释义的名字。

 <2> PropertySchedulerInstanceId: 可以看到这个项采用的是machineName+NewGuid来保证Scheduler容器的SchedulerID唯一,唯一性特别重要,因为在

                 Cluster 中就是用它来保证唯一性的,不过上面的代码有点累赘,其实只要写上“AUTO”就可以了,由底层的

                           SimpleInstanceIdGenerator来保证uniqueID的生成,如StdSchedulerFactory.Instantiate方法源码所示:

1 if (schedInstId.Equals(AutoGenerateInstanceId)) 2 { 3 autoId = true; 4 instanceIdGeneratorType = LoadType(cfg.GetStringProperty(PropertySchedulerInstanceIdGeneratorType)) ?? typeof(SimpleInstanceIdGenerator); 5 } (schedInstId.Equals(SystemPropertyAsInstanceId)) 7 { 8 autoId = true; 9 instanceIdGeneratorType = typeof(SystemPropertyInstanceIdGenerator); 10 }

 

<3> PropertyJobStoreType:这个属性将MongoDbJobStore作为底层的IJobStore实现者。

<4> PropertyDataSourceConnectionString,collectionPrefix: 这两个没什么好说的,一个是mongodb的connectionstring,一个是collection的前缀。

 

好了,下面就是我的完整代码:

Main(string[] args) 2 { 3 4 LogManager.Adapter = new Common.Logging.Simple.TraceLoggerFactoryAdapter() 5 { 6 Level = LogLevel.All 7 }; properties = new NameValueCollection(); 10 properties[StdSchedulerFactory.PropertySchedulerInstanceId] = "AUTO"; 11 properties[StdSchedulerFactory.PropertyJobStoreType] = typeof(MongoDbJobStore).AssemblyQualifiedName; properties[$] = ; properties[$] = ; factory = new StdSchedulerFactory(properties); IScheduler scheduler = factory.GetScheduler(); 23 24 scheduler.Start(); job = JobBuilder.Create<HelloJob>().WithIdentity(, ).Build(); trigger = TriggerBuilder.Create().WithCronSchedule().Build(); (!scheduler.CheckExists(job.Key)) 31 { 32 scheduler.ScheduleJob(job, trigger); 33 } 34 35 Console.Read(); 36 }

 

这个我自定义的HelloJob中,我特意记录一下scheduler的调度时间schedulertime和Trigger应该触发的时间nextFireTime。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识) - GuZhenYin

    C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识) - GuZhen

    2017-06-24 17:01

  • 【CSS3】使用CSS3制作全屏切换效果 - Glunefish

    【CSS3】使用CSS3制作全屏切换效果 - Glunefish

    2017-06-09 13:03

  • 使用React改版网站后的一些感想 - 吴海瑞博客

    使用React改版网站后的一些感想 - 吴海瑞博客

    2017-06-08 15:07

  • C#码农的大数据之路 - 使用C#编写MR作业 - hystar

    C#码农的大数据之路 - 使用C#编写MR作业 - hystar

    2017-06-08 08:00

网友点评
i