您的位置:首页 > IT > 正文

.NET 分布式调度作业 Sundial v2.10 发布 微头条

来源:开源中国     时间:2023-04-22 12:36:59

Sundial

.NET 功能齐全的开源分布式作业调度系统,可从最小的应用程序到大型企业系统使用。


(相关资料图)

特性

简化调度作业 支持作业监视器 支持作业执行器 支持自定义作业存储组件(持久化) 支持自定义策略执行 内置周期、Cron 作业 支持自定义作业触发器 支持依赖注入控制(含 HTTP 控制支持) 高内聚,低耦合,使代码更简单 很小,仅41KB无第三方依赖,TimeCrontab也是本人作品 可在Windows/Linux/MacOS守护进程部署 支持分布式、集群(多实例)部署 支持负载均衡(基于 TCP/IP) 高质量代码和良好单元测试 跨平台,支持 .NET5+

安装

Package Manager
Install-Package Sundial
.NET CLI
dotnet add package Sundial

快速入门

我们在主页上有不少例子,这是让您入门的第一个:

定义作业,并实现IJob接口:
publicclassMyJob: IJob{    privatereadonlyILogger _logger;    publicMyJob(ILogger logger)    {        _logger = logger;    }    publicTask ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)    {        _logger.LogInformation($"{context}");        returnTask.CompletedTask;    }}
Startup.cs注册AddSchedule服务和作业:
services.AddSchedule(options =>{    options.AddJob(Triggers.PeriodSeconds(5));});
运行项目:
info: 2022-12-05 19:32:56.3835407 +08:00 星期一 L System.Logging.ScheduleService[0] #1      Schedule hosted service is running.info: 2022-12-05 19:32:56.3913451 +08:00 星期一 L System.Logging.ScheduleService[0] #1      Schedule hosted service is preloading...info: 2022-12-05 19:32:56.4322887 +08:00 星期一 L System.Logging.ScheduleService[0] #1      The  trigger for scheduler of  successfully appended to the schedule.info: 2022-12-05 19:32:56.4347959 +08:00 星期一 L System.Logging.ScheduleService[0] #1      The scheduler of  successfully appended to the schedule.warn: 2022-12-05 19:32:56.4504555 +08:00 星期一 L System.Logging.ScheduleService[0] #1      Schedule hosted service preload completed, and a total of <1> schedulers are appended.info: 2022-12-05 19:33:01.5100177 +08:00 星期一 L MyJob[0] #13       [C]  5s 1ts 2022-12-05 19:33:01.395 -> 2022-12-05 19:33:06.428info: 2022-12-05 19:33:06.4676792 +08:00 星期一 L MyJob[0] #13       [C]  5s 2ts 2022-12-05 19:33:06.428 -> 2022-12-05 19:33:11.435info: 2022-12-05 19:33:11.4460946 +08:00 星期一 L MyJob[0] #16       [C]  5s 3ts 2022-12-05 19:33:11.435 -> 2022-12-05 19:33:16.412

JobExecutionContext重写了ToString()方法并提供以下几种格式:

# 持续运行格式<作业Id> 作业描述 [并行C/串行S] <作业Id 触发器Id> 触发器字符串 触发器描述 触发次数ts 触发时间 -> 下一次触发时间# 触发停止格式<作业Id> 作业描述 [并行C/串行S] <作业Id 触发器Id> 触发器字符串 触发器描述 触发次数ts 触发时间 [触发器终止状态]

更多文档

文档

您可以在主页找到 Sundial 文档。

贡献

该存储库的主要目的是继续发展 Sundial 核心,使其更快、更易于使用。Sundial 的开发在Gitee上公开进行,我们感谢社区贡献错误修复和改进。

许可证

Sundial 采用MIT开源许可证。

本期更新

新特性

[新增] 定时任务看板支持自定义刷新频率SyncRate功能4.8.7.43⏱️2023.04.12703b465 [新增] 定时任务看板支持完全自定义RequestPath入口地址功能4.8.7.34⏱️2023.04.0424736f6 [新增]定时任务一系列.AlterTo修改作业触发器触发时间便捷方法4.8.7.31⏱️2023.03.310349017 [新增] 定时任务看板UI作业列表最近执行时间列和优化显示效果4.8.7.12⏱️2023.03.1526462a8cb5dd17 [新增] 定时任务作业计划/工厂立即执行RunJob方法4.8.7.11⏱️2023.03.15#I6LD9X [新增] 定时任务看板UI提供立即执行功能4.8.7.11⏱️2023.03.15#I6LD9X [新增] 定时任务作业执行上下文JobExecutionContext服务提供器ServiceProvider属性4.8.7.10⏱️2023.03.1402586f8 [新增]定时任务HTTP作业,支持定时请求互联网URL地址4.8.7.7⏱️2023.03.1101d4466 [新增]定时任务作业触发器Trigger执行结果Result和执行耗时ElapsedTime属性4.8.7.7⏱️2023.03.1101d4466 [新增]定时任务作业看板支持查看作业触发器执行结果Result和执行耗时ElapsedTime属性4.8.7.7⏱️2023.03.1101d4466 [新增] 定时任务休眠时长和唤醒时机日志输出4.8.7.6⏱️2023.03.08#I6LANE [新增] 定时任务IScheduler.[Try]UpdateDetail(builder => {})IScheduler.[Try]UpdateTrigger(triggerId, builder => {})重载方法4.8.6⏱️2023.02.086e43a54 [新增] 定时任务Dashboard可自定义入口地址/schedule4.8.5.6⏱️2023.02.02c5639f5 [新增] 定时任务执行上下文RunId属性,用于标识单次作业触发器执行4.8.5.1⏱️2023.01.301aac470 [新增] 定时任务Dashboard查看作业触发器最近运行记录功能4.8.4.3⏱️2023.01.03e7d24d8 [新增] 定时任务作业触发器trigger.GetTimelines()获取最近10条运行记录列表4.8.4.3⏱️2023.01.03e7d24d8 [新增]定时任务Dashboard看板4.8.4⏱️2022.12.30d3f9669 [新增] 定时任务IScheduler.GetEnumerable()方法,可将作业计划转换成可枚举字典4.8.4⏱️2022.12.304d5235c [新增] 定时任务配置选项options.JobDetail.LogEnabled配置,可自动输出执行日志4.8.3.7⏱️2022.12.1458d2c20 [新增]定时任务IScheduler对象每次操作后自动刷新和提供手动刷新Reload()方法4.8.3.3⏱️2022.12.09#I65EQ1 [新增] 定时任务间隔分钟作业触发器Triggers.PeriodMinutes(5)[PeriodMinutes(5)]特性4.8.2.8⏱️2022.12.018e1f06f [新增] 定时任务工作日作业触发器Triggers.Workday()[Workday]特性4.8.2.6⏱️2022.11.3028b2d20 [新增] 定时任务作业校对功能,可对误差进行校正4.8.2.6⏱️2022.11.30f725a25 [新增]定时任务Triggers所有带AtCron表达式触发器构建器及特性4.8.2.5⏱️2022.11.29#I63PLR [新增] 定时任务批量添加SchedulerBuilder作业功能4.8.2.4⏱️2022.11.295faa67b [新增] 定时任务BuildSqlType配置,可设置生成不同数据库类型的SQL语句4.8.2.3⏱️2022.11.29293f9bc!675 [新增]JobDetailTrigger自定义ConvertToSQL输出SQL配置4.8.2⏱️2022.11.270bb9d8f [新增]作业触发器ResetOnlyOnce属性,支持只运行一次的作业重新启动服务重复执行4.8.1.5⏱️2022.11.25a8be728 [新增] 动态作业处理程序委托支持4.8.1.8⏱️2022.11.27e02266c

突破性变化

[调整]定时任务动态作业DynamicJob委托/方法签名4.8.7.10⏱️2023.03.146d56b53 [调整]定时任务底层所有代码,日志,注释,文档4.8.1.10⏱️2022.12.05

问题修复

[修复] 定时任务通过作业Id删除作业不能删除作业触发器问题4.8.7.35⏱️2023.04.05312ca35 [修复] 定时任务作业状态为积压:0归档:6时调用立即执行后不能恢复上一次状态4.8.7.18⏱️2023.03.216f5aae8 [修复] 定时任务更新作业null值默认被跳过问题4.8.7.17⏱️2023.03.20#I6OHO4 [修复] 定时任务生成SQL语句没有处理"转义问题4.8.7.15⏱️2023.03.19#I6NXKA [修复] 定时任务服务在停止进程时会卡住30秒问题4.8.7.8⏱️2023.03.13#I6MI9I#I6MHOU [修复] 定时任务看板删除不存在的作业触发器出现空异常4.8.7.7⏱️2023.03.1101d4466 [修复] 定时任务StartAll出现个别作业显示无触发时间的状态4.8.4.14⏱️2023.01.12#I6A08X [修复] 定时任务停止作业触发器后运行记录不能写入最新记录问题4.8.4.8⏱️2023.01.05d4c553f [修复] 定时任务使用Furion.Pure包访问Dashboard出现404问题4.8.4.2⏱️2023.01.0221977b7 [修复] 定时任务通过scheduler.RemoveTrigger(triggerId)报异常问题4.8.3.3⏱️2022.12.09#I65EQ1 [修复] 定时任务作业触发器配置了EndTimeStartTime之后Status没有对应上4.8.3.1⏱️2022.12.0952a5506 [修复] 定时任务通过scheduler.AddTrigger(triggerBuilder)无效的问题4.8.3.1⏱️2022.12.09#I65EQ1 [修复] 作业拥有多个触发器时暂停作业后依然存在个别未暂停的清空(并发问题)4.8.2.12⏱️2022.12.07#I655W9 [修复] 作业触发器不符合下一次执行规律但NextRunTime不为null情况4.8.1.5⏱️2022.11.25a8be728 [修复] 运行时启动/暂停作业无效问题4.8.1.6⏱️2022.11.25#I6368M [修复] 定时任务生成的SQL语句不支持MySQL问题4.8.1.7⏱️2022.11.26#I638ZC

其他更改

[调整] 定时任务GC回收逻辑,避免高频添加作业导致尾毛刺问题4.8.8.3⏱️2023.04.21#I6XIV8 [调整] 定时任务日志设计,减少不必要的日志输出4.8.8.3⏱️2023.04.21#I6XI2L [调整] 定时任务动态委托作业持久化逻辑,采用不触发持久化操作4.8.7.36⏱️2023.04.067bb58b6 [调整] 定时任务Http作业HttpMethod属性拼写错成HttpMedhod4.8.7.24⏱️2023.03.28!756 [调整] 定时任务配置选项BuilSqlType属性命为BuildSqlType4.8.7.11⏱️2023.03.1592117b8 [调整]定时任务查看作业触发器运行记录由保存10条改为5条4.8.7.7⏱️2023.03.0701d4466 [调整] 定时任务调度器时间精度,控制持续执行一年误差在100ms以内4.8.2.9⏱️2022.12.01334d089 [调整] 定时任务作业计划工厂GetNextRunJobs()方法逻辑4.8.2.7⏱️2022.11.30#I63VS2

文档

[新增] 作业执行器实现超时文档4.8.3.8⏱️2022.12.20 [新增] 作业触发器ResetOnlyOnce文档4.8.1.5⏱️2022.11.25a8be728 [新增]通过Roslyn动态编译代码创建IJob类型文档4.8.1.5⏱️2022.11.252c5e5be [新增] 自定义JobDetailTrigger输出SQL文档4.8.2⏱️2022.11.270bb9d8f

相关文章