• Golang 入门系列(八) cron定时任务


    1、cron 表达式的基本格式

     Go 实现的cron 表达式的基本语法跟linux 中的 crontab基本是类似的。cron(计划任务),就是按照约定的时间,定时的执行特定的任务(job)。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。如果对cron 表达式不清楚的,可以看看我之前介绍quartz.net 的文章,Quartz.NET总结(二)CronTrigger和Cron表达式 。
     

    2、使用的包

    github.com/robfig/cron

    3、示例

    • 创建最简单的最简单cron任务
    package main

    import (
    "github.com/robfig/cron"
    "fmt"
    )

    func main() {
    i := 0
    c := cron.New()
    spec := "*/5 * * * * ?"
    c.AddFunc(spec, func() {
    i++
    fmt.Println("cron running:", i)
    })
    c.Start()

    select{}
    }
    启动后输出如下:
    D:Go_Pathgosrccronjob>go run singlejob.go
    cron running: 1
    cron running: 2
    cron running: 3
    cron running: 4
    cron running: 5
    • 多个定时cron任务
    package main
    
    import (
        "github.com/robfig/cron"
        "fmt"
        )
    
    type TestJob struct {
    }
    
    func (this TestJob)Run() {
        fmt.Println("testJob1...")
    }
    
    type Test2Job struct {
    }
    
    func (this Test2Job)Run() {
        fmt.Println("testJob2...")
    }
    
    //启动多个任务
    func main() {
        i := 0
        c := cron.New()
    
        //AddFunc
        spec := "*/5 * * * * ?"
        c.AddFunc(spec, func() {
            i++
            fmt.Println("cron running:", i)
        })
    
        //AddJob方法
        c.AddJob(spec, TestJob{})
        c.AddJob(spec, Test2Job{})
    
        //启动计划任务
        c.Start()
    
        //关闭着计划任务, 但是不能关闭已经在执行中的任务.
        defer c.Stop()
    
        select{}
    }
    
    启动后输出如下:
    D:Go_Pathgosrccronjob>go run multijob.go
    cron running: 1
    testJob1...
    testJob2...
    testJob1...
    cron running: 2
    testJob2...
    testJob1...
    testJob2...
    cron running: 3
    cron running: 4
    testJob1...
    testJob2...

    4、最后

    以上,就将Golang中如何创建定时任务做了简单介绍,实际使用中,大家可以可结合toml yaml 配置需要定时执行的任务。



  • 相关阅读:
    01点睛Spring MVC 4.1-搭建环境
    18点睛Spring4.1-Meta Annotation
    17点睛Spring4.1-@Conditional
    16点睛Spring4.1-TaskScheduler
    15点睛Spring4.1-TaskExecutor
    Zabbix4.0.3解决中文乱码
    A10映射方法
    源码安装zabbix_agent4.0.3
    单机部署redis5.0集群环境
    zabbix系列之九——添加钉钉告警
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/10505005.html
Copyright © 2020-2023  润新知