最近在用Quartz做定時任務.雖然很方便,但是Quartz自己貌似是沒有UI介面的..感覺操作起來 就很難受..
查了一下,貌似有個UI元件 不過看了一下文件..直接給我勸退了..太麻煩了
我只想要一個像swaggerUI一樣,專案入侵量小,僅需要在Startup中注入的UI元件
然後就打算自己做一個.
最近終於完成第一個版本啦.. 打算直接開源給社群..
程式碼暫時還沒上傳gitlab,容我在整理優化一下 到時候是MIT協議
本篇主要就是簡單介紹一下如何使用和一部分介面.
1.注入QuartzUI
我們隨意建立一個託管專案,這裡我們以WebAPI作為示例,
通過Nuget新增GZY.Quartz.MUI 元件,如圖:
在Startup的ConfigureServices中新增註入程式碼如下:
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); var optionsBuilder = new DbContextOptionsBuilder<QuarzEFContext>(); optionsBuilder.UseDm("server=xxxxxxx;database=xxx;User Id=xxxx;PWD=xxxx", b => b.MaxBatchSize(1)); services.AddQuartzUI(optionsBuilder.Options); }
元件使用EF Core作為資料持久化訪問的工具(後期考慮擴充套件使用本地化的文字和其他的ORM框架,原始碼中也提供了介面,歡迎各路大神提交程式碼自行實現),所以需要建立一個DbContextOptionsBuilder,新增給QuartzUI即可.
在Startup的Configure方法中新增以下內容:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseQuartz(); //這裡注入Quartz app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
2.執行專案進入管理介面
直接執行專案,我們在URL中輸入固定字尾 QuartzUI 如圖:
這樣,我們的定時任務元件就跑起來了.
3.建立一個API型別的定時任務
點選新建任務,輸入對應引數.如圖:
注意:新建完成後任務處於未開啟狀態,需手動啟動.
點選啟動任務,定時任務就會根據設定啟動了.
4.檢視任務執行日誌
點選任務後面的執行記錄,即可查詢.如圖:
5.任務持久化
元件已經自動將任務持久化處理,專案啟動時會自行根據資料庫的資料情況來初始化任務,無需進行其他處理.
有心的同學已經已經發現了..我們有DLL的型別..
這種型別是直接呼叫專案中的程式碼..就不用通過API介面了..因為稍微麻煩一點,所以我們下篇再講..