用 Golang 跑「队列任务」,也可以像 Laravel 一样简单

话说用 Golang 跑「队列任务」需要几步?使用 Goravel ,四步不能再多了!

第一步:生成任务类

go run . artisan make:job HelloWorld

任务类结构

package jobs

type HelloWorld struct {
}

//Signature The name and signature of the job.
func (receiver *HelloWorld) Signature() string {
  return "process_podcast"
}

//Handle Execute the job.
func (receiver *HelloWorld) Handle(args ...interface{}) error {
  return nil
}

第二步:注册任务

注册到 app/provides/queue_service_provider.go

func (receiver *QueueServiceProvider) Jobs() []queue.Job {
  return []queue.Job{
    &jobs.HelloWorld{},
  }
}

第三步:启动队列服务器

在根目录下 main.go 中启动队列服务器

package main

import (
  "github.com/goravel/framework/support/facades"
  "goravel/bootstrap"
)

func main() {
  // This bootstraps the framework and gets it ready for use.
  bootstrap.Boot()

  // Start queue server by facades.Queue.
  go facades.Queue.Worker(queue.Args{}).Run()

  select {}
}

第四步:调度任务

err := facades.Queue.Job(&jobs.HelloWorld{}, []queue.Arg{}).Dispatch()

OK, Over. 更多功能详见文档,基本用法与 Laravel 保持一致,小伙伴们开始愉快的搞事情吧!

关于 Goravel

Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。 作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。

项目地址:github.com/goravel/goravel

文档地址:www.goravel.dev

0DkNTwOZmj.png!large

本作品采用《CC 协议》,转载必须注明作者和本文链接
唯有所执,方有所成。
讨论数量: 13

看了你设计的框架,关于控制器那块,我觉得可以参考一下goframe, 如下面伪代码大致示意,感觉会更简洁一些

package controllers

type userControllers struct {}

var User = new(userControllers)

func (r * userControllers) Info (c gin.Context) err {
    c.json()
    return nil
}
package routes

func init() {
    router.get("/user", controllers.User.Info)
}
1年前 评论
Bowens (楼主) 1年前
xiaer

Go 现在的框架很多了 :joy:

1年前 评论
Bowens (楼主) 1年前
drom 1年前
pangxianfei

长得像我之前开发的框架,相互学习下。

1年前 评论
Bowens (楼主) 1年前

我刚开始写 go 的时候也想着搞一个这样的框架

1年前 评论
pangxianfei

可以加好友,一起参与开发框架。

1年前 评论

能用在生产了不

1年前 评论
Bowens (楼主) 1年前
drom (作者) 1年前

看来是PHP转过去的,果然很laravel

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!