日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Quartz.net基于数据库的任务调度管理(Only.Jobs)

發布時間:2023/12/4 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz.net基于数据库的任务调度管理(Only.Jobs) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 前言:

各大調度組件優缺點在這就不討論了,使用Quartz.net是因為它可以執行秒級任務。

Only.Jobs 項目通過將各Job存儲在數據庫中,啟動一個專門的Job管理任務來循環調度各Job的的調度情況。

?

項目分為 Web管理系統 ?、服務運行端 ? 、數據提供邏輯處理層?

數據訪問使用了?SqlSugar?4.1.1.5版本,目前支持MySql、SqlServer

采用Quartz.net+Topshelf ?可安裝為windows服務。?

二 項目結構:

一一介紹下:

Only.Jobs.Items 下是創建的測試Job項目。

Only.Jobs ?是一個調度服務項目,集成了Topshelf,可安裝成windows服務。

Only.Jobs.Core ?是項目的核心層,對外提供數據操作。

Only.Jobs.Web 為調度任務的管理和狀態監控管理系統。

先來看下總體效果吧

運行Only.Jobs.Web項目:

?

?

在任務管理模塊可停止、啟用各Job.

?

三 表結構介紹

BackgroundJob ?為任務信息存儲表

BackgroundJobLog 為任務執行跟蹤日志表?

四 實現介紹

通過任務管理模塊將開發好的Job所在的項目配置起來,存儲到BackgroundJob表中。

在Only.Jobs項目中創建ManagerJob 類,Job調度任務管理。

[DisallowConcurrentExecution]

? ? public class ManagerJob : IJob

? ? {

? ? ? ? private readonly ILog _logger = LogManager.GetLogger(typeof(ManagerJob));


? ? ? ? public void Execute(IJobExecutionContext context)

? ? ? ? {

? ? ? ? ? ? Version Ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

? ? ? ? ? ? _logger.InfoFormat("ManagerJob Execute begin Ver." + Ver.ToString());

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? new QuartzManager().JobScheduler(context.Scheduler);

? ? ? ? ? ? ? ? _logger.InfoFormat("ManagerJob Executing ...");

? ? ? ? ? ? }

? ? ? ? ? ? catch (Exception ex)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? JobExecutionException e2 = new JobExecutionException(ex);

? ? ? ? ? ? ? ? e2.RefireImmediately = true;

? ? ? ? ? ? }

? ? ? ? ? ? finally

? ? ? ? ? ? {

? ? ? ? ? ? ? ? _logger.InfoFormat("ManagerJob Execute end ");

? ? ? ? ? ? }

? ? ? ? }

? ? }

JobScheduler 方法:


/// <summary>

? ? ? ? /// Job狀態管控

? ? ? ? /// </summary>

? ? ? ? /// <param name="Scheduler"></param>

? ? ? ? public void JobScheduler(IScheduler Scheduler)

? ? ? ? {

? ? ? ? ? ? List<BackgroundJobInfo> list = new BackgroundJobService().GeAllowScheduleJobInfoList();

? ? ? ? ? ? if (list != null && list.Count > 0)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? foreach (BackgroundJobInfo jobInfo in list)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? JobKey jobKey = new JobKey(jobInfo.BackgroundJobId.ToString(), jobInfo.BackgroundJobId.ToString() + "Group");

? ? ? ? ? ? ? ? ? ? if (Scheduler.CheckExists(jobKey) == false)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? if (jobInfo.State == 1 || jobInfo.State == 3)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ScheduleJob(Scheduler, jobInfo);

? ? ? ? ? ? ? ? ? ? ? ? ? ? if (Scheduler.CheckExists(jobKey) == false)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 0);

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 1);

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? else if (jobInfo.State == 5)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 0);

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? if (jobInfo.State == 5)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? Scheduler.DeleteJob(jobKey);

? ? ? ? ? ? ? ? ? ? ? ? ? ? new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 0);

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? else if (jobInfo.State == 3)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 1);

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

其他的簡單的就不在這描述了。

接下來看下運行效果:

啟動Only.Jobs項目

??

僅僅是一個工具項目而已,大家可盡管仍磚頭過來。代碼已上傳github https://github.com/mamingbo/Only.Jobs ?歡迎下載使用。

相關文章:

  • 基于Quartz.net 的開源任務管理平臺

  • 使用sqlserver搭建高可用雙機熱備的Quartz集群部署【附源碼】

  • 開源任務管理平臺TaskManager介紹

原文地址:http://www.cnblogs.com/mamingbo/p/7142057.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的Quartz.net基于数据库的任务调度管理(Only.Jobs)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。