通过 cron 定义定时任务,一个定时任务负责发布任务,一个定时任务负责接收并处理,二者通过 channel 实现数据发收,代码见下:
package main
import (
"fmt"
"time"
"github.com/robfig/cron/v3"
)
var tsChan chan int64
func init() {
tsChan = make(chan int64, 10)
}
func main() {
cronJobs()
}
func cronJobs() {
c := cron.New()
c.AddFunc("*/1 * * * *", cron.FuncJob(taskJob))
c.AddFunc("*/2 * * * *", cron.FuncJob(workerJob))
c.Start()
time.Sleep(time.Hour)
}
func taskJob() {
fmt.Println(time.Now(), "每分钟发送1个时间戳")
sendTs := time.Now().Unix()
tsChan <- sendTs
fmt.Printf("task send: %d\n", sendTs)
}
func workerJob() {
fmt.Println(time.Now(), "每2分钟接收1个时间处理")
recvTs := <- tsChan
fmt.Printf("worker recv: %d\n", recvTs)
}