我正在创建一个利用Quartz.NET(带有ADO.NET数据库存储)的项目。有核心组件,即执行作业的组件(此时控制台应用程序将是Windows服务),以及多个Web表单,用户可以在其中添加作业和编辑作业(将数据图值编辑为特定)。
我在从所有页面访问调度程序时遇到一些问题 - 核心组件和“添加作业”页面工作正常,完全没有问题。但在其中我基本上都是这样做的:
NameValueCollection properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "schedService";
properties["quartz.scheduler.instanceId"] = "sched1";
properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
properties["quartz.threadPool.threadCount"] = "10";
properties["quartz.threadPool.threadPriority"] = "Normal";
properties["quartz.jobStore.misfireThreshold"] = "60000";
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
properties["quartz.jobStore.useProperties"] = "false";
properties["quartz.jobStore.dataSource"] = "default";
properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
properties["quartz.jobStore.clustered"] = "true";
// if running MS SQL Server we need this
properties["quartz.jobStore.lockHandler.type"] = "Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz";
properties["quartz.dataSource.default.connectionString"] = "Data Source=CHRIS\\SQLEXPRESS;Initial Catalog=Scheduler;Integrated Security=True;Pooling=False";
properties["quartz.dataSource.default.provider"] = "SqlServer-20";
ISchedulerFactory schedService = new StdSchedulerFactory(properties);
IScheduler sched = schedService.GetScheduler();
当我在编辑页面中执行相同操作时,它会通知我已经有一个名为this的调度程序。
我知道我可能正在做一些真的愚蠢的事情,但是我怎样才能在所有页面中声明调度程序以便我可以访问它们?
答案 0 :(得分:1)
我自己是Quartz.Net的新手,但我猜测集群设置为'true',你需要为调度程序和实例使用唯一的名称。而且我相信你所追求的是远程。您应该只能运行一个调度程序,然后使用远程处理连接到它。
试试这个post。