.Net Core 定時任務TimeJob(轉載)
阿新 • • 發佈:2019-01-27
Pomelo.AspNetCore.TimedJob是一個.NET Core實現的定時任務job庫,支援毫秒級定時任務、從資料庫讀取定時配置、同步非同步定時任務等功能。
由.NET Core社群大神兼前微軟MVP AmamiyaYuuko (入職微軟之後就卸任MVP…)開發維護,不過好像沒有開源,回頭問下看看能不能開源掉。
Startup.cs相關程式碼
我這邊使用的話,首先肯定是先安裝對應的包:Install-Package Pomelo.AspNetCore.TimedJob -Pre
然後在Startup.cs的ConfigureServices函式裡面新增Service,在Configure函式裡面Use一下。
// This method gets called by the runtime. Use this method to add services to the container. publicvoidConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); //Add TimedJob services services.AddTimedJob(); } publicvoidConfigure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { //使用TimedJob app.UseTimedJob(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); }
Job相關程式碼
接著新建一個類,明明為XXXJob.cs,引用名稱空間using Pomelo.AspNetCore.TimedJob,XXXJob繼承於Job,新增以下程式碼。
public class AutoGetMovieListJob:Job { // Begin 起始時間;Interval執行時間間隔,單位是毫秒,建議使用以下格式,此處為3小時; //SkipWhileExecuting是否等待上一個執行完成,true為等待; [Invoke(Begin = "2016-11-29 22:10", Interval = 1000 * 3600*3, SkipWhileExecuting =true)] publicvoidRun() { //Job要執行的邏輯程式碼 //LogHelper.Info("Start crawling"); //AddToLatestMovieList(100); //AddToHotMovieList(); //LogHelper.Info("Finish crawling"); } }
應該可以在一個Job類裡寫多個任務方法