2010-10-21 93 views
1

我正在創建一個正在使用Quartz.NET(使用ADO.NET DB存儲)的項目。有核心組件,即執行作業的組件(此時的控制檯應用程序將是Windows服務)以及多個Web窗體,用戶可以在其中添加作業和編輯作業(將數據圖值編輯爲特定)。在項目中爲多個頁面/應用程序使用Quartz.NET

我在從所有頁面訪問調度程序時遇到了一些問題 - 核心組件和「添加作業」頁面完美無缺,完全沒有問題。但在他們,我基本上是這樣兩個:

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

當我做同樣的編輯頁面,它告訴我,已經有一個名爲此調度。

我知道我可能在做些什麼真的很愚蠢,但是我怎樣才能在我所有的頁面中聲明調度器,這樣我就可以訪問它們了?

回答

1

我是Quartz.Net的新手,但我猜集羣設置爲'true',您需要爲調度程序和實例使用唯一的名稱。我相信你所追求的是遠程處理。您應該只能運行一個調度程序,然後使用遠程連接來連接它。

試試這個post

+0

感謝哥們,明天我會試一試,讓你知道它是怎麼回事 – Chris 2010-10-21 21:39:56

+0

從[Quartz.NET教程](http://quartznet.sourceforge.net/tutorial/lesson_11.html):每個節點都在集羣必須具有唯一的instanceId,通過將「AUTO」作爲該屬性的值,可以輕鬆完成(不需要不同的屬性文件)。 – 2012-07-25 00:37:16

相關問題