Skip to content

kulend/Vino.Core.TimedTask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Vino.Core.TimedTask

基于.NET CORE的一个定时任务运行管理组件。

  • 版本发布

    [2017.07.04] 版本 1.0.1.2

    Invoke标注添加Name属性,TimedTask添加Name属性。

    [2017.07.03] 版本 1.0.1.1

    VinoTimedTask标注改为TimedTask。

  • 安装方法 Nuget:Install-Package Vino.Core.TimedTask

  • 使用方法

    1. 在Startup的ConfigureServices方法中
        services.AddTimedTask();
    1. 在Startup的Configure方法中
        app.UseTimedTask();
    1. 创建一个TestTask类,添加TimedTask标注,添加一个Run方法,添加Invoke标注
        [TimedTask]
        public class TestTask
        {
            [Invoke(Interval = 5000)]
            [SingleTask]
            public void Run()
            {
                Debug.WriteLine(DateTime.Now + " TestTask Run invoke...");
            }
    
            ...
        }
      Invoke标注有以下属性
          IsEnabled:是否有效,默认为true
          AutoReset:设置是执行一次(false)还是一直执行(true),默认为true
          Interval:运行间隔,默认一分钟
          BeginTime:有效开始时间
          ExpireTime:失效时间
    
      SingleTask标注代表如果上次运行还未结束,则本次将跳过运行。
    

Vino.Core.TimedTask.EntityFramework

使用EntityFramework从数据库获取定时任务配置信息。

  • 安装方法 Nuget:Install-Package Vino.Core.TimedTask.EntityFramework

  • 使用方法

    1. 创建MyDbContext
        public class MyDbContext: DbContext, IDbContext, ITimedTaskContext
        {
            public MyDbContext(DbContextOptions<MyDbContext> options)
                : base(options)
            {
            }
    
            public DbSet<TimedTask> TimedTasks { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
            }
        }
    1. 在Startup的ConfigureServices方法中
        services.AddTimedTask().AddEntityFrameworkTimedTask<MyDbContext>();
    1. 进行dotnet ef migrations add xxx, dotnet ef database update,在表中配置事务,其中 Identifier设置为:类名.方法名,如Test.TestTask.RunForDb

    2. 创建一个TestTask类,添加VinoTimedTask标注,添加一个RunForDb方法

        [VinoTimedTask]
        public class TestTask
        {
            [SingleTask]
            public void RunForDb()
            {
                Debug.WriteLine(DateTime.Now + " TestTask RunForDb invoke...");
            }
    
            ...
        }
    1. 自定义数据表名

      默认的表名为timed_task,如果需要自定义表名,则在MyDbContext的OnModelCreating方法中设置

        modelBuilder.Entity<TimedTask>().ToTable("tablename");
      创建表sql(mysql):
    
        CREATE TABLE `tablename` (
        `Id` varchar(32) NOT NULL,
        `Name` varchar(64) DEFAULT NULL,
        `AutoReset` bit(1) NOT NULL,
        `BeginTime` datetime(6) NOT NULL,
        `ExpireTime` datetime(6) NOT NULL,
        `Identifier` varchar(256) DEFAULT NULL,
        `Interval` int(11) NOT NULL,
        `IsEnabled` bit(1) NOT NULL,
        PRIMARY KEY (`Id`)
        )

本项目部分代码参照并引用了Pomelo.AspNetCore.TimedJob相关代码

About

基于.NET CORE的一个定时任务运行管理组件。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages