国外网速慢,最新版本迁移至http://git.oschina.net/chejiangyi/Dyd.BaseService.TaskManager

.net 简单任务调度平台

用于.net dll,exe的任务的挂载,任务的隔离,调度执行,访问权限控制,监控,管理,日志,错误预警,性能分析等。

  1. 平台基于quartz.net进行任务调度功能开发,采用C#代码编写, 支持corn表达式和第三方自定义的corn表达式扩展。

  2. 架构以插件形式开发,具有良好的功能扩展性,稳定性,简单性,便于第三方开发人员进一步进行功能扩展。

  3. 支持多节点集群,便于集群服务器的资源有效分配,任务的相互隔离。

  4. 支持邮件形式的错误预警,便于运维及时处理任务异常等。

-- 车江毅 2015-06-17

Dyd.BaseService.TaskManager源码部署须知:

  • 1、删除各个项目中Newtonsoft.Json.dll的引用
  • 2、检查各项目中XXF.dll的引用,确保引用了“引用”文件夹中的XXF.dll
  • 3、执行,建模脚本.txt中的sql server脚本语句
  • 4、【Dyd.BaseService.TaskManager.Web】 任务管理后台,部署此站点,修改web.config数据库的字符串连接
  • 5、修改登录代码和用户权限(看源码),不用源码内部通过crm登录
  • 6、【Dyd.BaseService.TaskManager.MonitorTasks】 监控任务,此任务需要重新生成,打包此此文件(原有的打包文件可以直接删除)
  • 7、【Dyd.BaseService.TaskManager.WinService】 进行服务安装,修改安装包的实际路径
  • 8、管理后台,可以正常访问后,请参照 “任务调度平台安装->任务调度平台部署流程(示例).xls”,来新建任务,调通任务可以正常进行,则为成功
*(感谢俞忠亮同学整理)*

## 开源相关群: .net 开源基础服务 238543768 ## (大家都有本职工作,也许不能及时响应和跟踪解决问题,请谅解。)

任务demo示例

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Dyd.BaseService.TaskManager.Demo
{
/// <summary>
/// 任务调度平台 任务插件的写法demo及说明
/// </summary>
public class DemoTask : XXF.BaseService.TaskManager.BaseDllTask
{
/// <summary>
/// 任务调度平台根据发布的任务时间配置,定时回调运行方法
/// 开发人员的任务插件必须要重载并该方法
/// </summary>
public override void Run()
{
/*
* this.OpenOperator 用于任务调度平台提供给第三方使用的所有api接口封装
*/ /*获取当前任务dll安装目录*/
this.OpenOperator.GetTaskInstallDirectory(); /*打印一条日志到任务调度平台,因为日志会存到平台数据库,所以日志要精简,对任务出错时有分析价值【注意:不要频繁打印无用的,非必要的,对分析无价值的日志信息】*/
this.OpenOperator.Log("这里打印一条日志到任务调度平台"); /*打印一条错误到任务调度平台,因为日志会存到平台数据库,所以日志要精简,对任务出错时有分析价值【注意:不要频繁打印无用的,非必要的,对分析无价值的日志信息】
*后续任务会有增加优先级区分,根据任务的优先级,错误的出现频率等,错误日志会定期推送到开发者邮箱和短信*/
this.OpenOperator.Error("这里打印一条错误日志到任务调度平台", new Exception("错误msg信息")); /*从数据库获取任务的临时数据,临时数据以jason的形式保存在数据库里面,便于任务上下文的恢复和信息传递【注意:不应用于"频繁的"存储"大量的"临时数据,会操作网络耗时和数据库性能差】*/
var databasetempinfo = this.OpenOperator.GetDataBaseTempData<DemoTaskDatabaseTempInfo>();
if (databasetempinfo == null)//若任务第一次运行,可能没有临时数据。当然也可以在发布任务的时候配置临时数据也可。
{
databasetempinfo = new DemoTaskDatabaseTempInfo();
databasetempinfo.LastLogID = 0;
} /*将任务的临时数据持久化到数据库中,临时数据以json的形式保存在数据库里面,便于任务上下文的恢复和信息传递【注意:不应用于"频繁的"存储"大量的"临时数据,会操作网络耗时和数据库性能差】
若临时数据用于下一次使用,必须要执行此方法,否则下次无法获取【注意:执行此方法,当前临时数据有可能被重置为null,便于内存资源释放】*/
this.OpenOperator.SaveDataBaseTempData(databasetempinfo); /*从本地安装目录中获取任务的临时数据,临时数据以jason的形式保存在本地,便于任务上下文的恢复和信息传递【注意:本地临时数据一般用于保存"大量的"临时数据】*/
var localtempinfo = this.OpenOperator.GetLocalTempData<DemoTaskLocalTempInfo>();
if (localtempinfo == null)//若任务第一次运行,可能没有临时数据。当然也可以在发布任务的时候上传临时数据json至安装压缩包中也可。
{
localtempinfo = new DemoTaskLocalTempInfo();
localtempinfo.file = new byte[0];
} /*将任务的临时数据持久化到本地安装目录中,临时数据以json的形式保存在本地安装目录里面,便于任务上下文的恢复和信息传递【注意:本地临时数据一般用于保存"大量的"临时数据】
若临时数据用于下一次使用,必须要执行此方法,否则下次可能无法获取【注意:执行此方法,当前临时数据有可能被重置为null,便于内存资源释放】*/
this.OpenOperator.SaveLocalTempData(localtempinfo); {
string msg = "执行业务中...."+ this.AppConfig["sendmailhost"];
Debug.WriteLine(msg);
System.IO.File.AppendAllText(this.OpenOperator.GetTaskInstallDirectory()+"业务.txt", msg);
}
}
/// <summary>
/// 开发人员自测运行入口
/// 需要将项目配置为->控制台应用程序,写好Program类和Main入口函数
/// </summary>
public override void TestRun()
{
/*测试环境下任务的配置信息需要手工填写,正式环境下需要配置在任务配置中心里面*/
this.AppConfig = new XXF.BaseService.TaskManager.SystemRuntime.TaskAppConfigInfo();
this.AppConfig.Add("sendmailhost", "smtp.163.com");
this.AppConfig.Add("sendmailname", "fengyeguigui@163.com");
this.AppConfig.Add("password", "******"); base.TestRun();
}
} /// <summary>
/// 任务调度平台之临时数据信息,用于任务上下文的信息传递。
/// 将会以json形式保存在任务调度平台数据库中,便于下一次回调运行时恢复并使用。【注意:不应用于"频繁的"存储"大量的"临时数据,会操作网络耗时和数据库性能差】
/// </summary>
public class DemoTaskDatabaseTempInfo
{
public int LastLogID { get; set; }
} /// <summary>
/// 任务调度平台之临时数据信息,用于任务上下文的信息传递。
/// 将会以json形式保存在任务调度平台本地安装文件夹中,便于下一次回调运行时恢复并使用。【注意:本地临时数据一般用于保存"大量的"临时数据】
/// </summary>
public class DemoTaskLocalTempInfo
{
public byte[] file { get; set; }
}
}

web后端部分截图及安装

未来构想:

    1. 任务故障转移: 检测到任务持续故障n次或者故障频率,判定进行异地节点/节点集群内的任务启动,可支持n次故障恢复。
  • 2)任务负载均衡: 多个任务并行执行,用于高资源负载任务的多节点运行。
  • 3)任务拆分: 一个父级任务可以创建多个子任务,并对任务进行管理,调度,故障恢复,预警等。

.net任务调度平台 Dyd.BaseService.TaskManager的更多相关文章

  1. .net 分布式架构之任务调度平台

    开源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.TaskManager .net 任务调度平台 用于.net dll,exe的任务的挂载, ...

  2. .net 简单任务调度平台安装简要说明

    .net 简单任务调度平台,用于.net dll,exe的任务的挂载,任务的隔离,调度执行,访问权限控制,监控,管理,日志,错误预警,性能分析等. 平台基于quartz.net进行任务调度功能开发,采 ...

  3. 转载《分布式任务调度平台XXL-JOB》

    <分布式任务调度平台XXL-JOB>       博文转自 https://www.cnblogs.com/xuxueli/p/5021979.html 一.简介 1.1 概述 XXL-J ...

  4. 分布式任务调度平台XXL-JOB

    <分布式任务调度平台XXL-JOB>       一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并 ...

  5. 分布式任务调度平台XXL-JOB搭建教程

    关于分布式任务调度平台XXL-JOB,其实作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式 ...

  6. 《分布式任务调度平台XXL-JOB》

    一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 1.2 特性 1.简单:支 ...

  7. XXL-JOB分布式任务调度平台安装与部署

    配XXL-JOB分布式任务调度平台安装与部署

  8. 宜信开源|微服务任务调度平台SIA-TASK入手实践

    引言 最近宜信开源微服务任务调度平台SIA-TASK,SIA-TASK属于分布式的任务调度平台,使用起来简单方便,非常容易入手,部署搭建好SIA-TASK任务调度平台之后,编写TASK后配置JOB进行 ...

  9. 宜信开源微服务任务调度平台(SIA-TASK)

    背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.常常需要一些任务调度系统帮助开发者解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此的背景下,很多原先的任 ...

随机推荐

  1. web.xml文件头声明各个版本参考

    Servlet 3.1 Java EE 7 XML schema, namespace is http://xmlns.jcp.org/xml/ns/javaee/ <web-app xmlns ...

  2. mongo 数据库操作

    启动和关闭数据库 启动 # mongodb 默认使用执行 mongod 命令所处的盘的根目录下  /data/db 作为自己的数据存储目录 #   所以在第一次执行该命令之前先自己动手新建一个  /d ...

  3. 深度强化学习(Deep Reinforcement Learning)入门:RL base & DQN-DDPG-A3C introduction

    转自https://zhuanlan.zhihu.com/p/25239682 过去的一段时间在深度强化学习领域投入了不少精力,工作中也在应用DRL解决业务问题.子曰:温故而知新,在进一步深入研究和应 ...

  4. RMQ 区间最大值最小值 最频繁次数

    区间的最大值和最小值 #include <cstdio> #include <cstring> #include <cmath> #include <iost ...

  5. AGC007题解

    发现自己思维能力又跟不上了...做题有点吃力...所以回归AGC刷题计划... AGC040506都写了一部分题然后懒得补全了,所以从07开始做吧.大概是从C开始. C 这也太人类智慧了吧... 我先 ...

  6. [CF1161C] Thanos Nim

    传送门 题意:\(2n\)堆石子,每堆\(a_i\)个,先手每次选中\(n\)堆石子,并从每堆中拿走任意个(可以不同).轮到某人时不足\(n\)堆则判负,问先手是否必胜.\(n\leq25,a_i\l ...

  7. 【hackerrank】Placements

    题目如下: You are given three tables: Students, Friends and Packages. Students contains two columns: ID  ...

  8. metaclass简单使用

    metaclass : 元类, 就是创建python类对象的类 # 便用type动态创建类 # 1. 使用type创建一个User类对象 无基类,无属性 . () : 表示基类, {}:属性 User ...

  9. 内联元素的盒子模型与文档流定位padding属性

            内联元素的盒子模型 1.内联元素不能设置width宽度和高度height span{width:200px ; height:200px}   与     span{width:100 ...

  10. 洛谷P4391 [BOI2009]Radio Transmission 无线传输——题解

    题目传送 假如我们有一个用于循环连接的最短串ans,考虑用它造出来的数据(即输入的字符串s)有什么特点.发现:ans自我连接出一个大串z后从中取出的一个子串即为s,对s造一个KMP算法中的next数组 ...