前言
日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue
,推荐使用 go-queue
去处理,go-queue
本身也是基于 go-zero
开发的,其本身是有两种模式:
dq
:依赖于beanstalkd
,适合延时、定时任务执行;
2024年11月27日
日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue
,推荐使用 go-queue
去处理,go-queue
本身也是基于 go-zero
开发的,其本身是有两种模式:
dq
:依赖于beanstalkd
,适合延时、定时任务执行;2024年11月27日
有感而发,程序员这个行业,真的是一天不跑,不学习,就会被拍死在沙滩的行业 。熬夜,加班哪都小事。什么删库跑路基本操作(没有删除跑路的童鞋,不是好童鞋啊。)。哈哈。
咱今天就说这个学习新知识,学了不用,三天就忘。三天不写,重写吐血!!!(医院的wifi,还是不错的哈~~)
做个实例来,稳固记录下学的知识应用吧。
从本篇文章开始逐步带大家使用go gin web框架来做一个后台管理系统。本篇文章是一系列的,连续博文。大家可以关注后,持续观看。
2024年11月27日
golang作为一个工程性很强的语言,本示例将示例一个golang定时任务从开发到部署的整个过程。
一.首先,创建项目结构
本示例定时任务主要使用 github.com/robfig/cron
本示例启动了三个定时任务
1.是每天早上8点
2.是每隔5分钟执行一次
3.是每隔15分钟执行一次
二.golang的编译
本次编译是在linux系统下,注意和mac下的区别。
2024年11月27日
定时器: time.Timer
Timer是一个定时器, 代表未来的一个单一事件, 你可以告诉timer你要等待多长时间, 它提供一个channel, 在将来的那个时间那个channel提供了一个时间值。
package main
import (
"fmt"
"time"
)
func main() {
//创建定时器, 2秒后, 定时器就会向自己的C字节发送一个time.Time类型的元素值
timer1 := time.NewTimer(time.Second * 2)
t1 := time.Now() //当前时间
fmt.Printf("t1: %v\n", t1) //显示当前时间
//2s后, 往timer1.C写数据, 有数据后, 就可以读取
t2 := <-timer1.C //读取数据
fmt.Printf("t2: %v\n", t2)
//如果只是想单纯的等待的话, 可以使用time.Sleep来实现
timer2 := time.NewTimer(time.Second * 2)
<-timer2.C
fmt.Println("2s后")
time.Sleep(time.Second * 2)
fmt.Println("再一次2s后")
<-time.After(time.Second * 2) //定时2s, 阻塞2s, 2s后产生一个事件, 往channel写内容
fmt.Println("再在一次2s后")
timer3 := time.NewTimer(time.Second)
go func() {
<-timer3.C
fmt.Println("Timer 3 expired")
}()
stop := timer3.Stop() //停止定时器
if stop {
fmt.Println("Timer 3 stopped")
}
fmt.Println("before")
timer4 := time.NewTimer(time.Second * 3) //原来设置3s
timer4.Reset(time.Second * 1) //重新设置时间
<-timer4.C
fmt.Println("after")
}
2024年11月27日
最近经常在linux/mac系统中使用自动化脚本的运行,管理定时任务生成报告或数据处理,备份等,crontab工具是个好助手。
crontab是一个Linux/Unix命令,用于安排作业在特定时间间隔内运行。每个用户都可以拥有自己的crontab文件,其中包含命令列表以及执行这些命令的时间。cron表达式成为管理定时任务的理想选择,广泛应用于服务器管理、数据处理等场景。
2024年11月27日
以下文章来源于GoUpUp ,作者大俊
简介
cron一个用于管理定时任务的库,用 Go 实现 Linux 中crontab这个命令的效果。之前我们也介绍过一个类似的 Go 库——gron。gron代码小巧,用于学习是比较好的。但是它功能相对简单些,并且已经不维护了。如果有定时任务需求,还是建议使用cron。
2024年11月27日
今天给大家分享一款基于GF(Go Frame)的后台管理系统 ,完善的权限用户管理,致力于快速高效开发cms系统、督办系统、后续将加入流程审批、工作流引擎、项目管理、挂图作战、数据大屏等功能。
2024年11月27日
承接上篇:上篇文章讲到改造 go-zero
生成的 app module
中的 gateway & RPC
。本篇讲讲如何接入 异步任务 以及 log的使用。
日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue
2024年11月27日
最近在处理日志上报kafka时,为防止上报过程中因kafka异常而导致主业务协程阻塞,为此建立了如下日志上报模型:日志主协程负责将消息发给生产者,再由生产者异步写入到broker集群,日志work协程则将收集的日志项通过带缓冲的channel将其传递给日志主协程,从而达到解耦。因日志模型是一对多的关系,为防止work协程长时间等待,为此为每次传递过程设置超时机制,于是在work协程中很容易写出如下代码: