【愚公系列】2022年12月 .NET CORE工具案例-Sundial实现任务调度

举报
愚公搬代码 发表于 2022/12/30 23:17:36 2022/12/30
1.4k+ 0 0
【摘要】 前言任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,而是由系统自动去执行任务。任务调度是操作系统的重要组成部分,而对于实时操作系统,任务调度直接影响其实时性能。任务调度算法可分为:事件驱动调度算法:根据事件的先后以及任务的优先级安排任务的执行;事件驱动调度依赖外部硬件设备,通过产生中断方式为任务调度提供信号。分两种,集成事件驱动调度:...

前言

任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,而是由系统自动去执行任务。

任务调度是操作系统的重要组成部分,而对于实时操作系统,任务调度直接影响其实时性能。

任务调度算法可分为:

  • 事件驱动调度算法:根据事件的先后以及任务的优先级安排任务的执行;事件驱动调度依赖外部硬件设备,通过产生中断方式为任务调度提供信号。分两种,集成事件驱动调度:中断的优先级与任务的优先级相对应,中断只有在其优先级高于正在执行的任务时才会被处理器响应。 非集成事件驱动调度:任务通过外部中断启动,中断优先级与相关任务优先级没有关系。
  • 时钟驱动调度算法:一般用于周期任务。

Sundial地址:https://gitee.com/dotnetchina/Sundial

在这里插入图片描述

一、Sundial实现任务调度

1.安装包

Install-Package Sundial

在这里插入图片描述

2.定义任务调度类

public class MyJob : IJob
{
    private readonly ILogger<MyJob> _logger;

    public MyJob(ILogger<MyJob> logger)
    {
        _logger = logger;
    }

    public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
    {
        _logger.LogInformation($"{context.JobDetail}  {context.Trigger} {context.OccurrenceTime}");
        await Task.CompletedTask;
    }
} 

在这里插入图片描述

3.注册任务调度类

在程序启动时注册

builder.Services.AddSchedule(options =>
{
    options.AddJob<MyJob>(Triggers.Minutely()   // 每分钟开始
     , Triggers.Period(5000)   // 每 5 秒,还支持 Triggers.PeriodSeconds(5),Triggers.PeriodMinutes(5),Triggers.PeriodHours(5)
     , Triggers.Cron("3,7,8 * * * * ?", CronStringFormat.WithSeconds));  // 每分钟第 3/7/8 秒
});

在webapi中注册

public class YourService: IYourService
{
    private readonly ISchedulerFactory _schedulerFactory;
    public YourService(ISchedulerFactory schedulerFactory)
    {
        _schedulerFactory = schedulerFactory;
    }

    public void AddJob()
    {
        _schedulerFactory.AddJob<MyJob>("动态作业 Id", Triggers.Secondly());
    }
}

在这里插入图片描述

4.执行任务调度类

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。