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 = $"未找到分组[{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

5.在线演示地址

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

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

原文链接:https://www.cnblogs.com/-clouds/p/10947924.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.Net Core中使用Quartz.Net Vue开即用的UI管理相关推荐

  1. 如何在 ASP.NET Core 中使用 Quartz.NET 执行任务调度

    当我们在web开发中,常常会遇到这么一个需求,在后台执行某一项具体的任务,具体的说就是这些任务必须在后台定时执行. Quartz.NET 是一个开源的 JAVA 移植版,它有着悠久的历史并且提供了强大 ...

  2. 在.NET Core 中使用Quartz.NET

    Quartz.NET是功能齐全的开源作业调度系统,可用于最小的应用程序到大型企业系统. Quartz.NET具有三个主要概念: •job:运行的后台任务•trigger:控制后台任务运行的触发器.•s ...

  3. ASP.NET Core 中文文档 第三章 原理(13)管理应用程序状态

    原文:Managing Application State 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:高嵩 在 ASP.NET Core 中,有多种途径可以对应用程序的状态进行 ...

  4. 在Asp.NET Core中如何优雅的管理用户机密数据

    在Asp.NET Core中如何优雅的管理用户机密数据 背景 回顾 在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法. 在早期VB/VB.NET时代,经常使用.ini ...

  5. 【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务

    在我的上一篇文章<在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度>,我展示了如何使用ASP.NET Core创建Quartz.NET托管服务并使用它来按计 ...

  6. 在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

    在这篇文章中,我将介绍如何使用ASP.NET Core托管服务运行Quartz.NET作业.这样的好处是我们可以在应用程序启动和停止时很方便的来控制我们的Job的运行状态.接下来我将演示如何创建一个简 ...

  7. .NET Core中Quartz.NET的依赖注入

    目录 介绍 项目概况 创建配置文件 使用构造函数注入 使用选项模式 结论 介绍 Quartz.NET是一个方便的库,允许您通过实现IJob接口来安排重复任务.然而,它的局限性在于,默认情况下,它仅支持 ...

  8. vue在html中写style,vue开发之style(六)(CSS页面布局之样式、背景、文字)

    最近在学vue开发,并且将学习笔记与大家一起分享,前面讲了vue环境的搭建: 基于vscode的Vue前端环境搭建问题及解决办法 还有vue的使用,重点就在webpack这个: vue开发之webpa ...

  9. 项目中使用Quartz集群分享--转载

    原文:http://hot66hot.iteye.com/blog/1726143 在公司分享了Quartz,发布出来,希望大家讨论补充. CRM使用Quartz集群分享  一:CRM对定时任务的依赖 ...

最新文章

  1. 希尔排序Linux下C实现
  2. 白内障预防+手术中人工晶状体的选择
  3. 22种编程语言新年快乐
  4. LeetCode——面试题 08.01. 三步问题
  5. ntext在mysql_varchar和text说不清的那些事
  6. 边缘计算框架_黑科技 | 英特尔发布边缘计算加速框架最新版本 | OpenVINO 2019R02...
  7. JDBC — JDBC之Insert方法
  8. Cadence Orcad Capture定时保存功能介绍图文视频教程
  9. Java后端开发技术选型
  10. 第一章-数据规范-数据分析报表设计标准
  11. 深度解析javaScript常见数据类型检查校验
  12. 基于归一化互相关函数的语音基音周期检测
  13. 迁移学习--深度迁移学习
  14. CC(Smart3D)航拍影像结合激光雷达创建实景三维模型(视频教程可下载)
  15. Android ViewBinding和DataBinding的区别
  16. 位、字节、字符的简介
  17. html静态商城网页制作 基于HTML+CSS+JavaScript在线服装商城店铺商城设计毕业论文源码
  18. 怎么校验一个数是否是素数(质数)以及如何更高效率的校验
  19. 构建智慧城市管理体系,京东方智慧物联平台赋能细分场景
  20. Mac使用iMovie剪切视频

热门文章

  1. html frame跳转实例,HTML frame标签怎么用?frame标签的具体使用实例
  2. 文档过期打不开怎么办_标准的产品需求文档在这里!(详细说明版)(2)
  3. centos 初学者_初学者:如何在Outlook 2013中创建和管理任务
  4. 如何在Windows 8中将旧控制面板添加到Metro Start屏幕
  5. vue element form中input等组件不能输入值
  6. natcat for mysql_用Navicat for mysql连接mysql报错1251-解决办法
  7. 天梯 L2 这是二叉搜索树吗?
  8. 【年度总结】2016年年度总结
  9. Android学习笔记(三)
  10. flex容器属性(一)