quartz 不执行_.NET Core中使用Quartz.Net Vue开即用的UI管理

这篇博客介绍了如何在.NET Core环境中利用Quartz.NET搭建一个带有Vue界面的作业调度系统。内容包括Quartz.NET的介绍、无需数据库的开箱即用UI、关键代码文件解析以及在线演示地址。提供了Quartz.NET的UI开发环境配置、登录口令和管理员帐号信息,并详细说明了作业触发器的操作。同时,给出了GitHub项目的链接供读者参考。
摘要由CSDN通过智能技术生成

(给DotNet加星标,提升.Net技能)

转自:我心依旧 cnblogs.com/-clouds/p/10947924.html

Quartz.NET

  • Quartz.Net 定制UI维护了常用作业添加、删除、修改、停止、启动功能,直接使用cron表达式设置作业执行间隔,有完整的日志记录。

  • Quartz.NET是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。

  • Quartz.NET是一个用C#编写的纯.NET库,是对JAVA开源调度框架Quartz的移植。目前支持.NET Core

  • Quartz.NET官方地址:https://www.quartz-scheduler.net/

1、Quartz.NetUI 开发环境

.NET  Core 2.1及以上版本、vs2017、Quartz.NET 3.0.7 、 vue 2.0 、IView

2、开箱即用、不依赖数据库

  • 直接运行Quartz.NetUI\Quartz.NET.Web目录下run.bat文件或部署项目

  • 登陆口令token位于appsettings.json节点token

  • 管理员帐号位于appsettings.json节点superToken

3、主要代码文件

  • QuartzSettings      文件夹由系统自动生成,与项目文件夹同级,存放作业配置信息及日志信息(发布时不需要发布或复制此文件夹)

  • TaskAuthorizeFilter.cs        帐号权限、AllowAnonymous过滤

  • QuartzNETExtension.cs       处理作业添加、删除、修改、停止、启动功能

  • FileQuartz.cs                         集中处理作业相关日志

  • HttpManager.cs                   接口处理

  • HealthController  对外开放的健康检查接口,判断作业站点是否处理活动状态。

  • TaskOptions.cs      作业相关字段

  • TaskBackGround/Index.cshtml    作业UI

  • task-index.js           前端Vue+IView 

4、作业触发器操作 QuartzNETExtension.cs

/// 
/// 触发新增、删除、修改、暂停、启用、立即执行事件
///
///
///
///
///
///
///
public static async Task<object> TriggerAction(this ISchedulerFactory schedulerFactory, string taskName, string groupName, JobAction action, TaskOptions taskOptions = null){
string errorMsg = "";
try
{
IScheduler scheduler = await schedulerFactory.GetScheduler();
List jobKeys = scheduler.GetJobKeys(GroupMatcher.GroupEquals(groupName)).Result.ToList();if (jobKeys == null || jobKeys.Count() == 0)
{
errorMsg = $"未找到分组[{groupName}]";return new { status = false, msg = errorMsg };
}
JobKey jobKey = jobKeys.Where(s => scheduler.GetTriggersOfJob(s).Result.Any(x => (x as CronTriggerImpl).Name == taskName)).FirstOrDefault();if (jobKey == null)
{
errorMsg = $"未找到触发器[{taskName}]";return new { status = false, msg = errorMsg };
}var triggers = await scheduler.GetTriggersOfJob(jobKey);
ITrigger trigger = triggers?.Where(x => (x as CronTriggerImpl).Name == taskName).FirstOrDefault();if (trigger == null)
{
errorMsg = $"未找到触发器[{taskName}]";return new { status = false, msg = errorMsg };
}object result = null;switch (action)
{case JobAction.删除:case JobAction.修改:await scheduler.PauseTrigger(trigger.Key);await scheduler.UnscheduleJob(trigger.Key);// 移除触发器await scheduler.DeleteJob(trigger.JobKey);
result = taskOptions.ModifyTaskEntity(schedulerFactory, action);break;case JobAction.暂停:case JobAction.停止:case JobAction.开启:
result = taskOptions.ModifyTaskEntity(schedulerFactory, action);if (action == JobAction.暂停)
{await scheduler.PauseTrigger(trigger.Key);
}else if (action == JobAction.开启){await scheduler.ResumeTrigger(trigger.Key);// await scheduler.RescheduleJob(trigger.Key, trigger);
}else
{await scheduler.Shutdown();
}break;case JobAction.立即执行:await scheduler.TriggerJob(jobKey);break;
}return result ?? new { status = true, msg = $"作业{action.ToString()}成功" };
}catch (Exception ex)
{
errorMsg = ex.Message;return new { status = false, msg = ex.Message };
}finally
{
FileQuartz.WriteJobAction(action, taskName, groupName, errorMsg);
}
}  

UI

4e082d882be20f3930ac02b216975c36.png

5、在线演示地址

http://132.232.2.109:9950 登陆口令:task123456

GitHub:https://github.com/cq-panda/Quartz.NetUI

推荐阅读

(点击标题可跳转阅读)

使用Elastic APM监控你的.NET Core应用 误用.NET Redis客户端CSRedisCore,自己挖坑自己填 ASP.NET Core使用HttpClientFactory Polly实现熔断降级

看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

ba90e40696d7bd431b5141c011d086ca.png

好文章,我在看❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值