又见百小僧,.NET分布式毫秒级定时任务Sundial面世
来源 | OSCHINA 社区
作者 | 百小僧
原文链接:https://www.oschina.net/news/219126/sundial-released
何许人也
沉默时光
不鸣则已
必须了解 Cron 表达式所有原理
必须了解 多线程、信号量,互斥锁,任务,绿色线程,线程 Token 知识
必须了解 TCP/IP 知识,实现集群控制,持久化控制
必须了解 CPU 休眠原理,唤醒原理,解决线程如何唤醒,休眠总时间计算
必须了解 Hash 表,链表知识,数据结构和算法,解决作业内存存储问题
必须了解 队列,管道通讯知识,解决作业运行时状态改变通知问题
必须了解 反射知识,IOC/DI 知识,设计模式,架构设计,为以后拓展和维护
还有很多很多小知识
一鸣惊人
一睹尊容
Sundial
licenseMIT:https://gitee.com/dotnetchina/Sundial/blob/master/LICENSE
特性
简化调度作业 支持作业监视器 支持作业执行器 支持自定义作业存储组件(持久化) 支持自定义策略执行 内置周期、Cron 作业 支持自定义作业触发器 支持依赖注入控制(含 HTTP 控制支持) 高内聚,低耦合,使代码更简单 很小,仅 41KB
无第三方依赖 可在 Windows/Linux/MacOS
守护进程部署支持分布式、集群(多实例)部署 支持负载均衡(基于 TCP/IP) 高质量代码和良好单元测试 跨平台,支持 .NET5+
安装
Package Manager
Install-PackageSundial
.NET CLI
dotnetaddpackageSundial
快速入门
定义作业,并实现
IJob
接口:
public class MyJob : IJob
{
private readonly ILogger<MyJob> _logger;
publicMyJob(ILogger<MyJob> logger)
{
_logger = logger;
}
publicasyncTask ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
{
_logger.LogInformation($"{context.JobDetail}{context.Trigger}{context.OccurrenceTime}");
await Task.CompletedTask;
}
}
在
Startup.cs
注册AddSchedule
服务和作业:
services.AddSchedule(options =>
{
options.AddJob<MyJob>(Triggers.PeriodSeconds(5)
, Triggers.Minutely());
});
运行项目:
info: System.Logging.ScheduleService[0]
Schedule Hosted Service is running.
warn: System.Logging.ScheduleService[0]
Schedule Hosted Service cancels hibernation and GC.Collect().
info: System.Logging.ScheduleService[0]
The Scheduler of <job1> successfully updated to the schedule.
info: Sundial.Samples.MyJob[0]
<job1> <job1 job1_trigger2> 5000ms 2022/11/23 16:22:51
info: Sundial.Samples.MyJob[0]
<job1> <job1 job1_trigger2> 5000ms 2022/11/23 16:22:56
info: Sundial.Samples.MyJob[0]
<job1> <job1 job1_trigger3> * * * * * 2022/11/23 16:23:00
info: Sundial.Samples.MyJob[0]
<job1> <job1 job1_trigger2> 5000ms 2022/11/23 16:23:01
info: Sundial.Samples.MyJob[0]
<job1> <job1 job1_trigger2> 5000ms 2022/11/23 16:23:07
文档
贡献
许可证
MIT License
Copyright (c) 2020-2022 百小僧, Baiqian Co.,Ltd.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
孤芳自赏
点击下方小程序
抽开源中国周边啦~
往期推荐
Forest + IDEA = 双倍快乐! ForestX 隆重登场
整活大师ChatGPT:实现编程语言、构建虚拟机……
AWS:.NET开源资金严重不足,但我会出手
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章