.NET 分布式任务调度 Sundial v2.8.5 发布,包含诸多改进


Sundial

license nuget dotNET China

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

Sundial.drawio

特性

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

安装

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

快速入门

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

  1. 定义作业,并实现 IJob 接口:
public class MyJob : IJob
{
private readonly ILogger<MyJob> _logger;
public MyJob(ILogger<MyJob> logger)
{
_logger = logger;
}

public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
{
_logger.LogInformation($"{context}");
return Task.CompletedTask;
}
}
  1.  Startup.cs 注册 AddSchedule 服务和作业:
services.AddSchedule(options =>
{
options.AddJob<MyJob>(Triggers.PeriodSeconds(5));
});
  1. 运行项目:
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 <job1_trigger1> trigger for scheduler of <job1> successfully appended to the schedule.
info: 2022-12-05 19:32:56.4347959 +08:00 星期一 L System.Logging.ScheduleService[0] #1
The scheduler of <job1> 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
<job1> [C] <job1 job1_trigger1> 5s 1ts 2022-12-05 19:33:01.395 -> 2022-12-05 19:33:06.428
info: 2022-12-05 19:33:06.4676792 +08:00 星期一 L MyJob[0] #13
<job1> [C] <job1 job1_trigger1> 5s 2ts 2022-12-05 19:33:06.428 -> 2022-12-05 19:33:11.435
info: 2022-12-05 19:33:11.4460946 +08:00 星期一 L MyJob[0] #16
<job1> [C] <job1 job1_trigger1> 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 开源许可证。


文档地址:https://furion.baiqian.ltd/docs/job/

本期更新

  • 新特性

    • [新增] 定时任务 HTTP 作业,支持定时请求互联网 URL 地址 4.8.7.7 ⏱️2023.03.11 01d4466
    • [新增] 定时任务作业触发器 Trigger 执行结果 Result 和执行耗时 ElapsedTime 属性 4.8.7.7 ⏱️2023.03.11 01d4466
    • [新增] 定时任务作业看板支持查看作业触发器执行结果 Result 和执行耗时 ElapsedTime 属性 4.8.7.7 ⏱️2023.03.11 01d4466
    • [新增] 定时任务休眠时长和唤醒时机日志输出 4.8.7.6 ⏱️2023.03.08 #I6LANE
    • [新增] 定时任务 IScheduler.[Try]UpdateDetail(builder => {})  IScheduler.[Try]UpdateTrigger(triggerId, builder => {}) 重载方法 4.8.6 ⏱️2023.02.08 6e43a54
    • [新增] 定时任务 Dashboard 可自定义入口地址 /schedule 4.8.5.6 ⏱️2023.02.02 c5639f5
    • [新增] 定时任务执行上下文 RunId 属性,用于标识单次作业触发器执行 4.8.5.1 ⏱️2023.01.30 1aac470
    • [新增] 定时任务 Dashboard 查看作业触发器最近运行记录功能 4.8.4.3 ⏱️2023.01.03 e7d24d8
    • [新增] 定时任务作业触发器 trigger.GetTimelines() 获取最近 10 条运行记录列表 4.8.4.3 ⏱️2023.01.03 e7d24d8
    • [新增] 定时任务 Dashboard 看板 4.8.4 ⏱️2022.12.30 d3f9669
    • [新增] 定时任务 IScheduler.GetEnumerable() 方法,可将作业计划转换成可枚举字典 4.8.4 ⏱️2022.12.30 4d5235c
    • [新增] 定时任务配置选项 options.JobDetail.LogEnabled 配置,可自动输出执行日志 4.8.3.7 ⏱️2022.12.14 58d2c20
    • [新增] 定时任务 IScheduler 对象每次操作后自动刷新和提供手动刷新 Reload() 方法 4.8.3.3 ⏱️2022.12.09 #I65EQ1
    • [新增] 定时任务间隔分钟作业触发器 Triggers.PeriodMinutes(5)  [PeriodMinutes(5)] 特性 4.8.2.8 ⏱️2022.12.01 8e1f06f
    • [新增] 定时任务工作日作业触发器 Triggers.Workday()  [Workday] 特性 4.8.2.6 ⏱️2022.11.30 28b2d20
    • [新增] 定时任务作业校对功能,可对误差进行校正 4.8.2.6 ⏱️2022.11.30 f725a25
    • [新增] 定时任务 Triggers 所有带 At  Cron 表达式触发器构建器及特性 4.8.2.5 ⏱️2022.11.29 #I63PLR
    • [新增] 定时任务批量添加 SchedulerBuilder 作业功能 4.8.2.4 ⏱️2022.11.29 5faa67b
    • [新增] 定时任务 BuildSqlType 配置,可设置生成不同数据库类型的 SQL 语句 4.8.2.3 ⏱️2022.11.29 293f9bc !675
    • [新增] JobDetail  Trigger 自定义 ConvertToSQL 输出 SQL 配置 4.8.2 ⏱️2022.11.27 0bb9d8f
    • [新增] 作业触发器 ResetOnlyOnce 属性,支持只运行一次的作业重新启动服务重复执行 4.8.1.5 ⏱️2022.11.25 a8be728
    • [新增] 动态作业处理程序委托支持 4.8.1.8 ⏱️2022.11.27 e02266c
  • 突破性变化

    • [调整] 定时任务底层所有代码,日志,注释,文档 4.8.1.10 ⏱️2022.12.05
  • 问题修复

    • [修复] 定时任务服务在停止进程时会卡住 30秒 问题 4.8.7.8 ⏱️2023.03.13 #I6MI9I #I6MHOU
    • [修复] 定时任务看板删除不存在的作业触发器出现空异常 4.8.7.7 ⏱️2023.03.11 01d4466
    • [修复] 定时任务 StartAll 出现个别作业显示 无触发时间 的状态 4.8.4.14 ⏱️2023.01.12 #I6A08X
    • [修复] 定时任务停止作业触发器后运行记录不能写入最新记录问题 4.8.4.8 ⏱️2023.01.05 d4c553f
    • [修复] 定时任务使用 Furion.Pure 包访问 Dashboard 出现 404 问题 4.8.4.2 ⏱️2023.01.02 21977b7
    • [修复] 定时任务通过 scheduler.RemoveTrigger(triggerId) 报异常问题 4.8.3.3 ⏱️2022.12.09 #I65EQ1
    • [修复] 定时任务作业触发器配置了 EndTime  StartTime 之后 Status 没有对应上 4.8.3.1 ⏱️2022.12.09 52a5506
    • [修复] 定时任务通过 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.25 a8be728
    • [修复] 运行时启动/暂停作业无效问题 4.8.1.6 ⏱️2022.11.25 #I6368M
    • [修复] 定时任务生成的 SQL 语句不支持 MySQL 问题 4.8.1.7 ⏱️2022.11.26 #I638ZC
  • 其他更改

    • [调整] 定时任务查看作业触发器运行记录由保存 10条 改为 5条 4.8.7.7 ⏱️2023.03.07 01d4466
    • [调整] 定时任务调度器时间精度,控制持续执行一年误差在 100ms 以内 4.8.2.9 ⏱️2022.12.01 334d089
    • [调整] 定时任务作业计划工厂 GetNextRunJobs() 方法逻辑 4.8.2.7 ⏱️2022.11.30 #I63VS2
  • 文档

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

相關推薦

2023-01-04

Sundial    .NET 功能齐全的开源分布式作业调度系统,可从最小的应用程序到大型企业系统使用。 特性 简化调度作业 支持作业监视器 支持作业执行器 支持自定义作业存储组件(持久化) 支持自定义策略执行

2022-11-25

的 dotNET China 组织:https://gitee.com/dotnetchina 😊 创造了分布式毫秒级定时任务 Sundial:https://gitee.com/dotnetchina/Sundial 😊 创造了分布式事件总线 Jaina:https://gitee.com/dotnetchina/Jaina 😊 .NET 全能 Cron 表达式解析 TimeCrontab 作者:htt

2023-04-23

Sundial    .NET 功能齐全的开源分布式作业调度系统,可从最小的应用程序到大型企业系统使用。 特性 简化调度作业 支持作业监视器 支持作业执行器 支持自定义作业存储组件(持久化) 支持自定义策略执行

2023-04-21

技术能力和应用能力。 Taier 是一款好用又强大的大数据分布式可视化的 DAG 任务调度系统,旨在降低 ETL 开发成本、提高大数据平台稳定性。它让大数据开发人员可以在 Taier 直接进行业务逻辑的开发,而不用关心任务错综复杂

2022-09-23

前言 本期主要对日志性能、远程请求性能还有诸多模块性能进行改进。 项目信息 Gitee:https://gitee.com/dotnetchina/Furion Github:https://github.com/MonkSoul/Furion 文档:https://dotnetchina.gitee.io/furion 本期更新 v4.4.8 版本细

2023-01-04

 下载量。 2022 年 11 月 24 日,Furion 发布了全新的分布式定时任务模块 Sundial。 2022 年 12 月 07 日,Furion 在 Nuget 平台突破 500万 下载量。 2022 年 12 月 29 日,Furion 获得开源云联盟优秀开源项目奖

2023-09-13

会精彩演讲回顾 介绍 Openjob 基于Akka架构的新一代分布式任务调度框架。支持多种定时任务、延时任务、工作流设计,采用无中心化架构,底层使用一致性分片算法,支持无限水平扩容。 高可靠 分布式无状

2023-11-16

一款致力提高分布式业务系统一致性的分布式重试与任务调度平台 易用性 业务接入成本小。避免依赖研发人员的技术水平,保障稳定性 灵活性 能够动态调整配置,启动/停止任务,以及终止运行中的任务 操作简单&nbs

2024-07-13

Solon 框架! Java “纯血国产”应用开发框架。开放原子开源基金会,孵化项目。从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态。 追求: 更快、更小、更简单 提倡: 克制、简洁、高效、开放、生态 有什

2024-08-02

、存储瓶颈、访存瓶颈以及通信瓶颈等问题逐渐凸显,对分布式训练和通用性能优化的需求日益迫切。 在产业化层面,框架又需要具备支持训练、压缩、推理一体化的全流程能力。这意味着,从模型的训练到优化,再到实际部

2024-03-03

PowerJob v4.3.8 已经发布,分布式任务调度中间件 此版本更新内容包括: PowerJob 主框架 PowerJob 全体成员祝大家龙年腾飞,新的一年身体健康,万事如意,阖家欢乐,幸福安康! Features Map/MapReduce增强 性能优化:底层执行

2023-09-15

NET 8 发布了首个 RC。据称 RC 阶段会发布两个版本,正式版将于 2023 年 11 月 14 日至 16 日在 .NET Conf 2023 上推出。.NET 8 是长期支持 (LTS) 版本,将会获得 3 年技术支持。 公告写道,此版本为 Android 和 WASM 引入了全新的 AOT 模式

2022-10-04

PowerJob v4.2.0 已经发布,分布式任务调度中间件 此版本更新内容包括: PowerJob 主框架 Features 支持动态日志,可使用控制台配置调整 Job 使用的 Logger 及 LogLevel。 支持 SERVER(服务端日志,默认)、LOCAL(本地日志)、STDOUT

2023-03-20

PowerJob v4.3.2 已经发布,分布式任务调度中间件 此版本更新内容包括: PowerJob 主框架 BugFix 修复了工作流直接追加 String 内容时新增引号的问题 #307 修复了表前缀配置oms.table-prefix无法正常工作的问题 #584 修复了测试模式 p