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-proapp/library/queue/engine.go中保留了两个钩子函数beforeHook() {},afterHook() {}可在任务执行前后分别处理一些事情, 可以进行任务存档, 有需要的用户可自行开发

队列模型

queue队列

gin-pro queue一般被用作 处理一些不是十分重要的业务场景比如:消息推送, 同步日志, 文件压缩, 一些重要的任务比如涉及到钱相关的, 还是建议使用专业的消息队列

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~