ASP.NET Core中Hangfire作業設計

原因:Hangfire定時作業時爲了不需要每加一個作業都需要添加一行定時作業代碼。

解決方案:

 

  1. 定義重複作業接口

  interface IRecurringJob

  {

        string CronExpression { get; set; }

 

        void ExecuteJob();

  }

 2.實現重複作業接口

    public class OrderJob : IRecurringJob

    {

        string _cronExpression = "*/5 * * * * ?";

        public string CronExpression

        {

            get

            {

                return _cronExpression;

            }

            set

            {

                value = _cronExpression;

            }

        }

 

        public void ExecuteJob()

        {

            File.AppendAllText("Job\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt", "訂單重複作業執行:" + DateTime.Now + System.Environment.NewLine);

        }

    }

  1. Startup類中ConfigureServices注入。

services.AddSingleton<IRecurringJob, OrderJob>();

 

  1. Startup類中Configure添加如下代碼

 app.Run(async (context) =>

 {

                var jobs=app.ApplicationServices.GetServices(typeof(IRecurringJob));

                foreach (var item in jobs)

                {

                    RecurringJob.AddOrUpdate(() => ((IRecurringJob)item).ExecuteJob(),  ((IRecurringJob)item).CronExpression);

                }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章