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-proqueue一般被用作 处理一些不是十分重要的业务场景比如:消息推送, 同步日志, 文件压缩, 一些重要的任务比如涉及到钱相关的, 还是建议使用专业的消息队列
gin 框架的优化方案 gin-pro
关于 LearnKu
推荐文章: