我目前正在开发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 :(得分:0)
您必须使用远程处理直接连接到每个调度程序实例。调度程序彼此不了解,并且无法获取集群中所有调度程序的列表。
连接到每个调度程序后,您将能够提取正在运行的作业列表并根据需要操作作业计划。如果所有调度程序都在一个集群中,那么您不必连接所有调度程序来自行操作作业。您可以从任何实例中执行此操作。但是,必须通过单独询问每个调度程序来编译正在运行的作业列表。