1

我目前工作Quartz.NET(2.3.1版本)來控制石英調度。我創建了不同的調度程序使用下面的代碼(每個調度)不同的工作:從外部應用程序

NameValueCollection properties = new NameValueCollection(); 
properties["quartz.scheduler.instanceName"] = "QuartzSchedulerTest"; 
properties["quartz.scheduler.instanceId"] = AUTO; 
properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; 
properties["quartz.threadPool.threadPriority"] = "Normal"; 
properties["quartz.jobStore.misfireThreshold"] = "60000"; 
properties["quartz.jobStore.clustered"] = "true"; 
properties["quartz.jobStore.tablePrefix"] = "QRTZ_"; 
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"; 
properties["quartz.jobStore.dataSource"] = "default"; 
properties["quartz.jobStore.useProperties"] = "false"; 
properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz"; 
properties["quartz.dataSource.default.connectionString"] = "myConnString" 
properties["quartz.dataSource.default.provider"] = "SqlServer-20"; 

// Get scheduler 
ISchedulerFactory sf = new StdSchedulerFactory(properties); 
IScheduler scheduler = sf.GetScheduler(); 

現在我已經存儲在SQL數據庫上的所有調度信息和一切正常。

我創建了一個新的控制檯應用程序,因爲我需要管理所有調度(獲得調度列表,每個調度工作,發送命令暫停和恢復觸發ECC ...)。 這是我寫的嘗試有處理程序,所有現有的調度代碼:

NameValueCollection properties = new NameValueCollection(); 
properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; 
properties["quartz.threadPool.threadPriority"] = "Normal"; 
properties["quartz.jobStore.misfireThreshold"] = "60000"; 
properties["quartz.jobStore.clustered"] = "true"; 
properties["quartz.jobStore.tablePrefix"] = "QRTZ_"; 
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"; 
properties["quartz.jobStore.dataSource"] = "default"; 
properties["quartz.jobStore.useProperties"] = "false"; 
properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz"; 
properties["quartz.dataSource.default.connectionString"] = "myConnString" 
properties["quartz.dataSource.default.provider"] = "SqlServer-20"; 

// Get scheduler 
ISchedulerFactory sf = new StdSchedulerFactory(properties); 
var schedulers = sf.AllSchedulers; 

但沒有處理程序返回(調度數爲0)。任何人都可以告訴我如何獲得所有調度程序?可能嗎?

對不起,我提前英語和感謝。

+0

您需要訪問調度[遠程](http://stackoverflow.com/questions/26480787/get-an-instance-of-the-scheduler-that-is-being-run-on-a-windows -service/26482361#26482361) – 2015-03-25 11:01:50

回答

0

您必須連接到每個調度實例直接使用遠程處理。調度程序不知道對方,也無法獲取集羣中所有調度程序的列表。

一旦你連接到每個調度,那麼你就可以拉運行的作業清單和操作作業計劃是必要的。如果所有調度程序都在一個集羣中,那麼您不必連接所有這些調度程序來自己操作作業。你可以從任何實例中做到這一點。但是,正在運行的作業列表必須通過單獨詢問每個調度程序進行編譯。

相關問題