Go微服务入门到容器化实践,落地可观测的微服务电商项目内附文档源码

2年前 (2022) 程序员胖胖胖虎阿
217 0 0

download:Go微服务入门到容器化实践,落地可观测的微服务电商项目内附文档源码

解析 Golang 定时任务库 gron 设计和原理
简单说,每一个位都代表了一个时间维度,* 代表全集,所以,上面的语义是:在每天早上的4点05分触发任务。
但 cron 毕竟只是一个操作系统级别的工具,假如定时任务失败了,或者压根没启动,cron 是没法提示开发者这一点的。并且,cron 和 正则表达式都有一种魔力,不晓得大家能否感同身受,这里援用同事的一句名言:

这世界上有些言语十分类似: shell脚本, es查询的那个dsl言语, 定时任务的crontab, 正则表达式. 他们类似就类似在每次要写的时分根本都得重新现学一遍。

正巧,最近看到了 gron 这个开源项目,它是用 Golang 完成一个并发平安的定时任务库。完成十分简单精巧,代码量也不多。今天我们就来一同分离源码看一下,怎样基于 Golang 的才能做出来一个【定时任务库】。

Gron provides a clear syntax for writing and deploying cron jobs.

gron 是一个泰国小哥在 2016 年开源的作品,它的特性就在于十分简单和明晰的语义来定义【定时任务】,你不用再去记 cron 的语法。我们来看下作为运用者怎样上手。
首先,我们还是一个 go get 装置依赖:
$ go get github.com/roylee0704/gron
复制代码
假定我们希冀在【机遇】到了以后,要做的工作是打印一个字符串,每一个小时执行一次,我们就能够这样:
package main

import (

"fmt"
"time"
"github.com/roylee0704/gron"

)

func main() {

c := gron.New()
c.AddFunc(gron.Every(1*time.Hour), func() {
    fmt.Println("runs every hour.")
})
c.Start()

}

相关文章

暂无评论

暂无评论...