发布网友 发布时间:2022-04-23 06:33
共2个回答
懂视网 时间:2022-05-02 07:15
各大调度组件优缺点在这就不讨论了,使用quantz.net是因为它可以执行秒级任务。
Only.Jobs 项目通过将各Job存储在数据库中,启动一个专门的Job管理任务来循环调度各Job的的调度情况。
项目分为 Web管理系统 、服务运行端 、数据提供逻辑处理层
数据访问使用了 SqlSugar 4.1.1.5版本,目前支持MySql、SqlServer
采用quantz.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调度任务管理。
1 [DisallowConcurrentExecution] 2 public class ManagerJob : IJob 3 { 4 private readonly ILog _logger = LogManager.GetLogger(typeof(ManagerJob)); 5 6 public void Execute(IJobExecutionContext context) 7 { 8 Version Ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; 9 _logger.InfoFormat("ManagerJob Execute begin Ver." + Ver.ToString()); 10 try 11 { 12 new QuartzManager().JobScheduler(context.Scheduler); 13 _logger.InfoFormat("ManagerJob Executing ..."); 14 } 15 catch (Exception ex) 16 { 17 JobExecutionException e2 = new JobExecutionException(ex); 18 e2.RefireImmediately = true; 19 } 20 finally 21 { 22 _logger.InfoFormat("ManagerJob Execute end "); 23 } 24 } 25 }View Code
JobScheduler 方法:
1 /// <summary> 2 /// Job状态管控 3 /// </summary> 4 /// <param name="Scheduler"></param> 5 public void JobScheduler(IScheduler Scheduler) 6 { 7 List<BackgroundJobInfo> list = new BackgroundJobService().GeAllowScheduleJobInfoList(); 8 if (list != null && list.Count > 0) 9 { 10 foreach (BackgroundJobInfo jobInfo in list) 11 { 12 JobKey jobKey = new JobKey(jobInfo.BackgroundJobId.ToString(), jobInfo.BackgroundJobId.ToString() + "Group"); 13 if (Scheduler.CheckExists(jobKey) == false) 14 { 15 if (jobInfo.State == 1 || jobInfo.State == 3) 16 { 17 ScheduleJob(Scheduler, jobInfo); 18 if (Scheduler.CheckExists(jobKey) == false) 19 { 20 new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 0); 21 } 22 else 23 { 24 new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 1); 25 } 26 } 27 else if (jobInfo.State == 5) 28 { 29 new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 0); 30 } 31 } 32 else 33 { 34 if (jobInfo.State == 5) 35 { 36 Scheduler.DeleteJob(jobKey); 37 new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 0); 38 } 39 else if (jobInfo.State == 3) 40 { 41 new BackgroundJobService().UpdateBackgroundJobState(jobInfo.BackgroundJobId, 1); 42 } 43 } 44 } 45 } 46 }View Code
其他的简单的就不在这描述了。
接下来看下运行效果:
启动Only.Jobs项目
仅仅是一个工具项目而已,大家可尽管仍砖头过来。
代码已上传github
https://github.com/mamingbo/Only.Jobs 欢迎下载使用。
quantz.net基于数据库的任务调度管理(Only.Jobs)
标签:manager ref lap 下载 基于 item open web管理 iat
热心网友 时间:2022-05-02 04:23
quant 畅通词汇
英 [kwænt] 美 [kwænt]
n. 船桨;数量分析专家
v. 用篙撑
I have quant of happiness and wisdom.
我有快乐和智慧的桨。
The boat is equipped with handles, safe pulling rope, draw ring, quant and other relevant accessories.
船上设有把手、安全拉绳、牵引环、船桨等相关配件。
In the quant, only one inspection lot can be recorded.
在份中,只能记录一个检验批。
( Quant, Long/ Short, Global Macro, etc*)
(量化基金,做多/做空基金,全球宏观型基金等)