4.6. 队列
简介
gin-pro
内置queue
队列 是基于 go 协程开发的, 不需要任何外部驱动, 即可实现高性能 高并发异步处理任务, 支持延迟处理任务
定义job
实现异步任务同样十分简单
首先在app/jobs
下创建一个delay_print.go
package jobs
import "fmt"
func NewDelayPrint() *DelayPrint {
return &DelayPrint{}
}
type DelayPrint struct{}
func (d DelayPrint) Handle() {
fmt.Println("DelayPrint")
}
调用job
异步执行
只需要一行代码即可实现异步调用
system.Queue.Display(jobs.NewDelayPrint())
延迟执行
延迟执行只需要实现Delay()
方法即可, 参数为延迟时长 单位秒
system.Queue.Delay(12).Display(jobs.NewDelayPrint())
artisan 命令快速生成job
./artisan make:job delay_print
队列扩展
gin-pro
queue
队列是基于grounine
实现的, 可能会在系统异常时丢失任务, 但是解决办法肯定是有的, gin-pro
在app/library/queue/engine.go
中保留了两个钩子函数beforeHook() {}
,afterHook() {}
可在任务执行前后分别处理一些事情, 可以进行任务存档, 有需要的用户可自行开发
队列模型
gin-pro
queue
一般被用作 处理一些不是十分重要的业务场景比如:消息推送, 同步日志, 文件压缩, 一些重要的任务比如涉及到钱相关的, 还是建议使用专业的消息队列
推荐文章: