Net作業排程(二) -CrystalQuartz遠端管理

蘑菇先生發表於2014-11-01

Source Code-1.6M

 介紹

上篇已經瞭解Quartz.NET的基本使用方法了。但如果想方便的知道某個作業執行情況,需要暫停,啟動等操作行為,這時候就需要個Job管理的介面。

本文介紹Quartz.NET如何進行遠端job管理,如圖:

實戰

一:作業服務端

 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();

        }
 public class PrintMessageJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("Hello!");
        }
    }

啟動如下

二:作業遠端管理端,無需寫任何程式碼,引用官方程式集,嵌入到已有的web網站。 

      PM> Install-Package CrystalQuartz.Remote

      Webconfig 需要配置的地方

<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

 

相關文章