Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用 Golang 跑「队列任务」,也可以像 Laravel 一样简单

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

原创
作者头像
韩同学的简单逻辑
发布于 2022-05-25 13:27:49
发布于 2022-05-25 13:27:49
8700
举报
文章被收录于专栏:GoravelGoravel

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

第一步:生成任务类

代码语言:txt
AI代码解释
复制
go run . artisan make:job HelloWorld

任务类结构

代码语言:txt
AI代码解释
复制
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

代码语言:txt
AI代码解释
复制
func (receiver *QueueServiceProvider) Jobs() []queue.Job {
  return []queue.Job{
    &jobs.HelloWorld{},
  }
}

第三步:启动队列服务器

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

代码语言:txt
AI代码解释
复制
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 {}
}

第四步:调度任务

代码语言:txt
AI代码解释
复制
err := facades.Queue.Job(&jobs.HelloWorld{}, []queue.Arg{}).Dispatch()

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

关于 Goravel

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

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

文档地址:www.goravel.dev

golang横-500.png
golang横-500.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP-web框架Laravel-队列(二)
在 Laravel 中,定义作业是通过实现 Illuminate\Contracts\Queue\Job 接口来完成的。这个接口定义了一个 fire 方法,用于处理作业的逻辑。下面是一个示例::
堕落飞鸟
2023/04/30
6180
laravel 定时任务通过队列发送邮件[通俗易懂]
关于laravel发送邮件,请先参考我的另一片文章:laravel sendcloud发送邮件,再继续往下看。
全栈程序员站长
2022/07/12
1.3K0
记录:简单使用Laravel 队列 queue 教程
Laravel 队列为不同的后台队列服务提供统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关系型数据库的队列。队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间。
Alone88
2019/10/22
1.6K0
在 Golang 中像 Laravel 的 Artisan 一样使用命令行,Goravel 带你找回熟悉的味道
熟悉的配方,原来的味道。PHPer 极速切换,Goer 的福音。 欢迎 star 与 issues。
韩同学的简单逻辑
2022/04/25
8620
在 Golang 中像 Laravel 的 Artisan 一样使用命令行,Goravel 带你找回熟悉的味道
laravel-redis消息队列
基本的流程就是由生产者(业务代码)将数据推送到队列中(此处使用的是Redis),然后由消费者(处理程序)从队列中取出数据进行加工处理。
用户10002156
2024/01/29
2560
laravel-redis消息队列
Golang 中使用「Event - Listener」解耦逻辑,让你的应用更简单!
当一个订单完成时,老板说:发个短信给用户,再发个邮件吧,同时更新下统计数据,巴拉巴拉(真事多)。
韩同学的简单逻辑
2022/08/23
5960
Golang 中使用「Event - Listener」解耦逻辑,让你的应用更简单!
Laravel 队列
由于队列任务是长期存在的进程,因此如果不重新启动,他们不会注意到代码的更改。因此,使用队列任务部署应用程序的最简单方法是在部署过程中重新启动任务。您可以通过发出 queue:restart 命令优雅地重新启动所有进程:
崔哥
2023/02/27
1.2K0
Laravel5.5之事件监听、任务调度、队列
你写好任务类后,就能通过 dispatch 辅助函数来分发它了。唯一需要传递给 dispatch 的参数是这个任务类的实例: 利用模型工厂生成30个用户:
唐成勇
2019/05/26
1.4K0
Laravel7中Redis队列的使用
首先我们需要在配置文件中配置默认队列驱动为Redis,队列配置文件是config/queue.php:
Lansonli
2021/10/09
1K0
Laravel之队列「建议收藏」
队列配置文件存放在config/queue.php 。在该文件中你将会找到框架自带的每一个队列驱动的连接配置,包括数据库、Beanstalkd、 IronMQ、 Amazon SQS、 Redis 以及同步(本地使用)驱动。其中还包含了一个 null 队列驱动以拒绝队列任务。
全栈程序员站长
2022/08/09
1.8K0
Laravel队列使用案例
1、配置数据库和Redis //编辑config/database.php 'mysql' => [ 'driver' => 'mysql', 'host' => 'localhost', 'port' => 3306, 'database' => 'demo_laravel', 'username' => 'demo', 'password' => '1234
苦咖啡
2018/04/28
1.8K0
基于 Redis 在 Laravel 中实现消息队列及底层源码探究
对应的基本工作流程是生产者(业务代码)先将消息数据推送到队列,然后再通过其他的处理进程来消费队列中的消息数据,从而实现生产者和消费者之间的解耦。因此,消息队列非常适用于一些需要异步执行的耗时操作(比如邮件发送、文件上传),或者业务临时的高并发操作(比如秒杀、消息推送),对于提升系统性能和负载非常有效,尤其是 PHP 这种本身不支持并发编程的语言,是实现异步编程的不二之选。
学院君
2021/01/08
6.5K0
Laravel 消息队列的优先级和失败任务重试实现
上篇教程发布后,有同学反馈消息队列的优先级怎么实现,Laravel 本身对此提供了支持,除此之外,Laravel 的队列组件还支持批处理、延迟推送、失败任务处理、消息队列中间件、频率限制等很多特性,一篇教程根本介绍不完,毕竟消息队列也是个很复杂的系统,但是放到这里来讲似乎又偏离了 Redis 这个主题,所以这里学院君先给大家简单介绍下消息队列优先级和失败任务处理的实现,至于更多功能特性,后面单独开一个消息队列专题进行系统介绍。
学院君
2021/01/08
2.5K0
Laravel异步队列全攻略
最近项目需求,研究了laravel的异步队列。官方文档虽然很是详细,但也有些晦涩难懂,在此记录下步骤,供大家参考。
双面人
2021/08/05
1.3K0
PHP-web框架Laravel-队列(三)
Laravel的队列系统默认是串行处理作业的,这意味着每个作业都要等待前一个作业处理完毕后才能开始处理。但是,有时候我们需要同时处理多个作业,这就需要并发处理。
堕落飞鸟
2023/04/30
1.2K0
在 Golang 中进行「任务调度」,像用 Laravel 一样丝滑
实现了 Laravel 中大部分的实用方法,持续更新中, 欢迎 star 与 issues。
韩同学的简单逻辑
2022/04/25
3110
在 Golang 中进行「任务调度」,像用 Laravel 一样丝滑
让Laravel/Lumen队列消费Non-Laravel queue job
一句话概括需求就是:Allow Laravel to process non-laravel queue job.
andychai
2019/03/08
2.6K0
让Laravel/Lumen队列消费Non-Laravel queue job
laravel 基于redis队列
https://www.owenzhang.com/wechat_reward.png
OwenZhang
2023/05/06
3010
laravel 基于redis队列
Laravel8的迁移压缩、任务批处理、速率限制优化 | 文末抽奖
之前写了一篇Laravel提高DB查询效率的文章,转发到群里后竟然有人质疑我说“Laravel是他好几年前用的框架,没想到现在还有人在用。”
王中阳Go
2022/10/26
2K0
Laravel/Lumen 使用 redis队列
在Web开发中,我们经常会遇到需要批量处理任务的场景,比如群发邮件、秒杀资格获取等,我们将这些耗时或者高并发的操作放到队列中异步执行可以有效缓解系统压力、提高系统响应速度和负载能力。
Lansonli
2021/10/09
2.5K0
相关推荐
PHP-web框架Laravel-队列(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档