我知道您將Quartz解決方案編譯爲可作爲Windows服務運行的exe文件。而且這個Quartz服務器以某種方式運行作業。我沒有得到的是,我在哪裏放置了所有工作代碼,這些代碼實際上完成了這項工作?比方說,我希望我的「工作」調用存儲過程,或者每小時調用一次Web服務。或者如果我有我想要執行的本機VB代碼呢? (而且我不想創建另一個獨立的VB應用程序,它可以從命令行調用。)所有這些類型的作業配置將被存儲,編碼和配置的位置並不明顯。在Quartz.Net中運行作業
0
A
回答
1
我建議你先閱讀教程。
你可以在Jay Vilalta的blog找到很多有用的信息。
Getting Started With Quartz.Net: Part 1
Getting Started With Quartz.Net: Part 2
Getting Started With Quartz.Net: Part 3
和
Scheduling Jobs Programmatically in Quartz.Net 1.0
或
Scheduling Jobs Programmatically in Quartz.Net 2.0
,然後你可以看看github code,並嘗試examples這是非常有據可查的。
UPDATE:
服務器是調度。
這是一個不斷運行的Windows服務應用程序,可以運行您使用客戶端應用程序安排的工作。
你甚至可以像我一樣編寫自己的服務器(Windows服務),因爲我不想使用遠程處理與該層交談。
您可以決定安排和運行在一個控制檯應用程序的工作(我不建議) 用幾行代碼:
class Program
{
public static StdSchedulerFactory SchedulerFactory;
public static IScheduler Scheduler;
static void Main(string[] args)
{
SchedulerFactory = new StdSchedulerFactory();
Scheduler = SchedulerFactory.GetScheduler();
var simpleTrigger = TriggerBuilder.Create()
.WithIdentity("Trigger1", "GenericGroup")
.StartNow()
.WithSimpleSchedule(x => x.RepeatForever().WithIntervalInSeconds(5))
.Build();
var simpleJob = JobBuilder.Create<SimpleJob>()
.WithIdentity("simpleJob", "GenericGroup")
.Build();
Scheduler.ScheduleJob(simpleJob, simpleTrigger);
Console.WriteLine("Scheduler started");
Scheduler.Start();
Console.WriteLine("Running jobs ...");
Console.ReadLine();
Scheduler.Shutdown(waitForJobsToComplete: false);
Console.WriteLine("Shutdown scheduler!");
}
}
這是工作:
public class SimpleJob : IJob
{
public virtual void Execute(IJobExecutionContext context)
{
JobKey jobKey = context.JobDetail.Key;
Console.WriteLine("{0} Executing job {1} ", DateTime.Now.ToString(), jobKey.Name);
}
}
你可以下載一個測試項目here(VerySimpleQuartzApp)。
上面的應用程序不存儲觸發器/作業信息。
您可以決定是否要將作業/觸發器的信息保存在XML文件中,如here和here所述。
或者您可以將作業/觸發器存儲在database中,以便調度程序(通常是Windows服務)可以讀取這些信息並運行作業。
如果您正在尋找一個可以與服務器進行通信(通過遠程處理)並安排作業並運行它的示例,則可以使用this。
有幾個開源項目(經理),您可以使用它來啓動/停止或計劃作業。閱讀我的答案here。
相關問題
- 1. Quartz.NET - 作業不運行?
- 2. Quartz.Net中的長時間運行作業
- 3. 在Quartz.net中從正在運行的作業中獲取數據
- 4. 在Quartz.net中的作業執行時間
- 5. 在Quartz.net中,一次運行一個作業的一個實例
- 6. 如何讓Quartz.net作業在單線程的公寓中運行?
- 7. 如何在單獨的AppDomain中運行Quartz.NET作業?
- 8. Quartz.net作業調度
- 9. 在ADOStore運行作業時出現Quartz.net錯誤
- 10. 是否可以在UI線程上運行quartz.net作業?
- 11. 在Quartz.Net中調度依賴作業
- 12. 跨多個Azure實例同時運行Quartz.Net作業
- 13. Quartz.Net:防止不同作業類型同時運行
- 14. Quartz.Net作業存儲查詢
- 15. Quartz.Net(2.2.3)安排新作業
- 16. Quartz.NET - 已暫停的作業
- 17. 用Quartz.Net創建作業
- 18. Quartz.NET作業使用期限
- 19. 使用Quartz.net在羣集中的每臺機器上運行IStateful作業
- 20. Quartz.NET中的自動作業命名
- 21. Quartz.net在併發作業之間暫停
- 22. 如何從單獨的程序集中創建Quartz.NET運行作業?
- 23. 如何檢查所有作業是否在關機前完成運行? - Quartz.net
- 24. 在故事中運行並行作業
- 25. 在Jenkins中運行並行作業
- 26. Quartz.NET - 長時間運行的工作?
- 27. 在後臺運行作業
- 28. 在quartz.net xml作業定義文件中使用參數配置作業
- 29. 運行Cron作業
- 30. Quartz.Net,SQL Server,作業被堵塞
謝謝,我讀過發佈之前的所有內容。我看到的唯一實際例子是如何從命令行運行單獨的EXE文件,這是我不想做的事情。所有的代碼示例...你把代碼放在哪裏?在石英解決方案本身?簡單調用Web服務怎麼樣?我是否必須構建一個完整的應用才能調用該服務?這是我在所有教程中找不到的實際實現細節。 –
我已經更新了我的答案。希望它有幫助。 – LeftyX
非常有幫助!我快到了。所以我有你說的調度器。我可以在某處使用客戶端的方式定義日程安排,作業等。但是我在哪裏放置了工作的實際工作代碼?我沒有看到xml作業會告訴調度程序究竟要運行什麼。我把DLL放在什麼地方?另外,每小時一次簡單的Web服務調用又如何?我需要一個完整的迷你exe或dll來實現簡單的事情嗎? –