网站首页 > 开源技术 正文
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 core2.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
/// <summary>
/// 触发新增、删除、修改、暂停、启用、立即执行事件
/// </summary>
/// <param name="schedulerFactory"></param>
/// <param name="taskName"></param>
/// <param name="groupName"></param>
/// <param name="action"></param>
/// <param name="taskOptions"></param>
/// <returns></returns>
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<JobKey> jobKeys = scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals(groupName)).Result.ToList();
if (jobKeys == null || jobKeys.Count() == 0)
{
errorMsg = #34;未找到分组[{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 = #34;未找到触发器[{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 = #34;未找到触发器[{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 = #34;作业{action.ToString()}成功" };
}
catch (Exception ex)
{
errorMsg = ex.Message;
return new { status = false, msg = ex.Message };
}
finally
{
FileQuartz.WriteJobAction(action, taskName, groupName, errorMsg);
}
}
UI
5.在线演示地址
- http://132.232.2.109:9950 登陆口令:task123456
- GitHub:https://github.com/cq-panda/Quartz.NetUI
原文地址:
https://www.cnblogs.com/-clouds/p/10947924.html
猜你喜欢
- 2025-05-08 盘点6个.NetCore+Vue前后端分离的开源项目
- 2025-05-08 「UI设计」B端设计经验总结-帮助新人快速上手
- 2025-05-08 一款开源的 SSL 证书管理工具,助你轻松自动申请、部署、续期 SSL 证书
- 2025-05-08 强烈推荐一款超好用的免费开源电商系统
- 2025-05-08 Vue开发者必收藏!12.7k Star的顶级资源库大揭秘
- 2025-05-08 产品经理必知必会的原型设计知识(产品原型设计师)
- 2025-05-08 澳大利亚广播公司电视节目聚焦前邪教成员
- 2025-05-08 即墨人民医院精确放疗技术再上新台阶
- 2025-05-08 自带无线充电智能保护壳 iPad Pro概念机
- 2025-05-08 基于.Net5+Vue+iView前后端分离通用权限开源系统,适合初学者
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)