10 Star 121 Fork 24

dotNET China / Sundial

加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

Sundial (重构中)

license nuget dotNET China

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

Sundial.drawio

特性

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

安装

Install-Package Sundial
dotnet add package Sundial

快速入门

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

  1. 定义作业,并实现 IJob 接口:

周期作业:固定时间执行作业,如 1秒

[SimpleJob("simple_job", 1000)]
public class SimpleJob : IJob
{
    private readonly ILogger<SimpleJob> _logger;
    public SimpleJob(ILogger<SimpleJob> logger)
    {
        _logger = logger;
    }

    public Task ExecuteAsync(JobExecutingContext context, CancellationToken cancellationToken)
    {
        // Do your job!!!
        _logger.LogInformation("<{JobName}> {DateTime}", context.JobDetail.Identity, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        return Task.CompletedTask;
    }
}

Cron 作业:支持完整 Cron 表达式 精确控制。

[CronJob("cron_job", "* * * * *")]
public class CronJob : IJob
{
    private readonly ILogger<CronJob> _logger;
    public CronJob(ILogger<CronJob> logger)
    {
        _logger = logger;
    }

    public Task ExecuteAsync(JobExecutingContext context, CancellationToken cancellationToken)
    {
        // // Do your job!!!
        _logger.LogInformation("<{JobName}> {DateTime}", context.JobDetail.Identity, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        return Task.CompletedTask;
    }
}
  1. Startup.cs 注册 AddSundial 服务和作业:
services.AddSundial(builder =>
{
    builder.AddJob<SimpleJob>();
    builder.AddJob<CronJob>();
});
  1. 运行项目:
info: Sundial.JobScheduler[0]
      Scheduler of <simple_job> Service is running.
info: Sundial.JobScheduler[0]
      Scheduler of <cron_job> Service is running.
info: Sundial.Samples.SimpleJob[0]
      <simple_job> 2021-11-16 11:15:45
info: Sundial.Samples.CronJob[0]
      <cron_job> 2021-11-16 11:15:45
      <simple_job> 2021-11-16 11:15:46
info: Sundial.Samples.SimpleJob[0]
  1. 结合 API 调度作业
public class ApiController: ControllerBase
{
    private readonly IScheduler _scheduler;
    public ApiController(IScheduler scheduler)
    {
        _scheduler = scheduler;
    }

    // 暂停
    public async Task PauseAsync(string jobName)
    {
        await _scheduler.PauseAsync(jobName);
    }

    // 开始
    public async Task StartAsync(string jobName)
    {
        await _scheduler.StartAsync(jobName);
    }

    // ......
}

更多文档

文档

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

贡献

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

许可证

Sundial 采用 MulanPSL-2.0 开源许可证。

Copyright (c) 2020-2021 百小僧, Baiqian Co.,Ltd.
Sundial is licensed under Mulan PSL v2.
You can use this software according to the terms andconditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
            https://gitee.com/dotnetchina/Sundial/blob/master/LICENSE
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUTWARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.

简介

.NET 功能齐全的开源作业调度系统,可从最小的应用程序到大型企业系统使用。 展开 收起
C#
MulanPSL-2.0
取消

发行版 (1)

全部

Sundial

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/dotnetchina/Sundial.git
git@gitee.com:dotnetchina/Sundial.git
dotnetchina
Sundial
Sundial
master

搜索帮助