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

Source Code-1.6M

 介绍

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

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

实战

一:作业服务端

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!");
       }
   }

启动如下

二:作业远程管理端,无需写任何代码,引用官方程序集,嵌入到已有的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 提供基础功能,可以继续在此基础上进行二次开发,另外推荐使用Window服务寄宿,比较方法。

参考资源

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

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

 

posted @   蘑菇先生  阅读(20296)  评论(29编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示