0%

Net作业调度(二) -CrystalQuartz远程管理

介绍

上篇已经了解Quartz.NET的基本使用方法了。但如果想方便的知道某个作业执行情况,需要暂停,启动等操作行为,这时候就需要个Job管理的界面。

本文介绍Quartz.NET如何进行远程job管理,如图:

-CrystalQuartz远程管理/011755051751192.png)

实战

一:作业服务端

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

static void Main(``string``[] args)

{

var properties = new NameValueCollection();

properties[``"quartz.scheduler.instanceName"``] = "RemoteServerSchedulerClient"``;

properties[``"quartz.threadPool.type"``] = "Quartz.Simpl.SimpleThreadPool, Quartz"``;

properties[``"quartz.threadPool.threadCount"``] = "5"``;

properties[``"quartz.threadPool.threadPriority"``] = "Normal"``;

properties[``"quartz.scheduler.exporter.type"``] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz"``;

properties[``"quartz.scheduler.exporter.port"``] = "556"``;

properties[``"quartz.scheduler.exporter.bindName"``] = "QuartzScheduler"``;

properties[``"quartz.scheduler.exporter.channelType"``] = "tcp"``;

var schedulerFactory = new StdSchedulerFactory(properties);

var scheduler = schedulerFactory.GetScheduler();

var job = JobBuilder.Create<PrintMessageJob>()

.WithIdentity(``"myJob"``, "group1"``)

.Build();

var trigger = TriggerBuilder.Create()

.WithIdentity(``"myJobTrigger"``, "group1"``)

.StartNow()

.WithCronSchedule(``"/10 * * ? * *"``)

.Build();

scheduler.ScheduleJob(job, trigger);

scheduler.Start();

}

1

2

3

4

5

6

7

public class PrintMessageJob : IJob

{

public void Execute(IJobExecutionContext context)

{

Console.WriteLine(``"Hello!"``);

}

}

启动如下

-CrystalQuartz远程管理/011801015192327.png)

二:作业远程管理端,无需写任何代码,引用官方程序集,嵌入到已有的web网站。 

      PM> Install-Package CrystalQuartz.Remote

      Webconfig 需要配置的地方

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<configuration>

<crystalQuartz>

<provider>

<add property=``"Type" value=``"CrystalQuartz.Core.SchedulerProviders.RemoteSchedulerProvider, CrystalQuartz.Core" />

<add property=``"SchedulerHost" value=``"tcp://127.0.0.1:556/QuartzScheduler" /> <!--TCP监听的地址-->

</provider>

</crystalQuartz>

<system.webServer>

<!-- Handler拦截处理了,输出作业监控页面-->

<handlers>

<add name=``"CrystalQuartzPanel" verb=``"*" path=``"CrystalQuartzPanel.axd" type=``"CrystalQuartz.Web.PagesHandler, CrystalQuartz.Web" />

</handlers>

</system.webServer>

</configuration>

 Web管理界面

-CrystalQuartz远程管理/011811269404890.png)

其他

CrystalQuartz 提供基础功能,可以继续在此基础上进行二次开发,另外推荐使用Window服务寄宿,比较方法。

参考资源

张善友               http://www.cnblogs.com/shanyou/archive/2012/01/15/2323011.html

CrystalQuartz开源的地址   https://github.com/guryanovev/CrystalQuartz