laravel框架 - 消息队列如何使用

news2024/11/27 11:27:42

业务场景:项目里边有很多视频资源需要上传到抖音资源库,通过队列一条一条上传。

参考实例:发送邮件,仅供参考

(1)创建任务【生成任务类】
在你的应用程序中,队列的任务类都默认放在 app/Jobs 目录下。如果这个目录不存在,那当你运行 make:job Artisan 命令时目录就会被自动创建。你可以用以下的 Artisan 命令来生成一个新的队列任务

php artisan make:job DyUploadResource

任务类结构
任务类的结构很简单,一般来说只会包含一个让队列用来调用此任务的 handle 方法,定义需要执行的任务逻辑,如发送邮件等

<?php

namespace App\Jobs;

use App\Models\HtQuestLibraryQuest;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
class DyUploadResource implements ShouldQueue
{
	use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

	/**
	 * 任务最大尝试次数。
	 *
	 * @var int
	 */
	public $tries = 5;

	/**
	 * 任务失败前允许的最大异常数
	 *
	 * @var int
	 */
	public $maxExceptions = 3;

	/**
	 * 任务运行的超时时间。
	 *
	 * @var int
	 */
	public $timeout = 600;

	/**
	 * 课程信息
	 *
	 * @var int
	 */
	public $product_data;

    /**
     * 抖音资源上传
     *
     * @return void
     */
    public function __construct(array $product_data)
    {
		$this->product_data = $product_data;

		if(empty($product_data)){

            exit();
		}
    }

    /**
     * Execute the job.
     * 里边写代码逻辑
     * @return bool
     */
    public function handle(): bool
	{
		
    }

}

(2)分发任务【如何使用】

<?php

namespace App\Http\Controllers;

use App\Jobs\ProcessPodcast;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class PodcastController extends Controller
{
     /**
     * 抖音资源课程上传
     */
    public function dyUploadResource(Request $request)
    {
  		// dispatch 用于分发,onQueue 用户起名,监听使用  
  		// ->delay(Carbon::now()->addMinutes(10))  延迟分发
        DyUploadResourceMiddle::dispatch($product_data)->onQueue('dy_resource_get_status');
        
    }
}

(3)监听队列

php artisan queue:work --queue=dy_resource_get_status

开启后队列会执行redis已入队的值

redis队列任务:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款好用的汇编学习工具【compile explore在线编译调试】

登录网址&#xff1a;Compiler Explorer 然后编写代码如下&#xff1a;可以看到&#xff0c;最左边是源代码&#xff0c;中间是汇编&#xff0c;可以选择编程语言和编译链工具&#xff0c;最右边是打印的输出结果&#xff0c;对于汇编指令可右键会弹出汇编指令的解释说明。

十四、ADDA数模转换

十四、AD&DA转换 介绍XTP2046介绍模块代码 模数转换数模转换 介绍 AD&#xff1a;模数转换&#xff0c;将模拟信号转换为计算机可操作的数字信号DA&#xff1a;数模转换&#xff0c;将数字信号转换为模拟信号 XTP2046 介绍 时序 模块代码 #define XPT2046_VBAT 0xAC /…

大数据学习1.0-Centos8虚拟机安装

1.创建新的虚拟机 2.选择稍后安装OS 3.选择Linux的CentOS8 4.选择安装路径 5.分配20g存储空间 6.自定义硬件 7.分配2g内存 8.分配2核处理器 9.选择镜像位置 10.开启虚拟机安装 推荐密码设置为root

全国职业技能大赛云计算--高职组赛题卷②(容器云)

全国职业技能大赛云计算--高职组赛题卷②&#xff08;容器云&#xff09; 第二场次题目&#xff1a;容器云平台部署与运维任务1 Docker CE及私有仓库安装任务&#xff08;5分&#xff09;任务2 基于容器的web应用系统部署任务&#xff08;15分&#xff09;任务3 基于容器的持续…

洛谷刷题入门篇:分支结构

今天又来了&#xff0c;刷题刷题&#xff0c;我爱刷题&#xff0c;题单链接如下&#xff1a; https://www.luogu.com.cn/training/101#problems 一、【深基1-2】小学数学 N 合一 题目如下&#xff1a;https://www.luogu.com.cn/problem/P2433 题目描述 问题 1 请输出 I lov…

[Linux入门]---git命令行的基本使用

文章目录 1.git使用gitee仓库创建git使用测试ignore文件 1.git使用 git是一款对文件进行版本控制的软件&#xff0c;gitee、github是基于git软件搭建的网站&#xff0c;是可以对代码进行托管的平台&#xff1b;github是国外的网站&#xff0c;访问慢&#xff0c;不稳定&#xf…

Linux学习之Redis使用

搭建Redis服务器 在主机redis64运行redis服务 #安装redis服务 [rootredis64 ~]# yum install -y redis # 启动redis服务并开机启动 [rootredis64 ~]# systemctl enable redis --now # 查看redis端口 [rootredis64 ~]# ss -tnlp | grep redis-server LISTEN 0 128 …

异步通讯技术之RabbitMQ

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、初识MQ …

算法通过村第八关-树(深度优先)黄金笔记|寻找祖先

文章目录 前言最近公共祖先问题总结 前言 提示&#xff1a;生活就是一场有很多规则&#xff0c;却没有裁判的比赛。 --约瑟夫布罗茨基《悲伤与理智》 最近公共祖先问题 参考题目地址&#xff1a;236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 如果将搜索…

金属铬 铬含量的测定 硫酸亚铁铵滴定法

声明 本文是学习GB-T 4702.1-2016 金属铬 铬含量的测定 硫酸亚铁铵滴定法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 GB/T4702 的本部分规定了硫酸亚铁铵滴定法测定金属铬中铬含量。 本部分适用于金属铬(钒≤0.20%)中铬含量的测定&…

【小沐学Python】网络爬虫之urllib

文章目录 1、简介2、功能介绍2.1 urllib库和requests库2.2 urllib库的模块2.2.1 urllib.request2.2.2 urllib.error2.2.3 urllib.parse2.2.4 urllib.robotparser 2.3 入门示例 3、代码示例3.1 urlib 获取网页(1)3.2 urlib 获取网页(2) with header3.3 urllib post请求 4、urlli…

LeetCode【1. 两数之和】

穷通有命无须卜&#xff0c;富贵何时乃济贫&#xff1b;角逐名场今已久&#xff0c;依然一幅旧儒巾。 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输…

测试网页调用本地可执行程序(续:带参数调用)

前篇文章介绍了网页调用本地可执行程序的方式&#xff0c;通过在注册表中注册命令&#xff0c;然后在网页中调用命令启动本地程序。如果需要传递参数&#xff0c;则需要在注册表命令中的command项中设置如下形式的值。 "XXXXXX\XXXXXXX.exe" "%1"&emsp…

【数据分享】海洋热含量Global Ocean Heat Content CDR】

【数据分享】海洋热含量Global Ocean Heat Content CDR 海洋与大气科学 海洋热含量数据可以不用计算了&#xff0c;直接下载使用&#xff01; 海洋热含量气候数据记录&#xff08;CDR&#xff09;是一组 1955 年至今的海洋热含量异常&#xff08;OHCA&#xff09;时间序列&…

在 android 上使用 adb client

adb tool 分为 adb 和 adbd。 adb 用作 host 使用&#xff0c;包含了client和server&#xff0c;adbd 则作为 device 端&#xff0c;在 android 源码目录下&#xff0c;共用一套源码。但 android 源码下的 adb&#xff0c;不支持把 adb 编译为 android 平台的 adb client。因此…

气传导耳机哪个品牌比较好?推荐几款很不错的气传导耳机

​气传导耳机是一种新型耳机类型&#xff0c;采用不入耳设计&#xff0c;上耳佩戴更加舒适稳固&#xff0c;还可以为你带来更加自然和舒适的听觉体验&#xff0c;同时满足你对周围环境的需求。面对市面上这么多气传导耳机&#xff0c;不知道该如何挑选时&#xff0c;也不用过于…

web二级操作题

js和css的引入 在 HTML 中&#xff0c;你可以使用 <script> 和 <link> 标签来引入外部的 JavaScript 文件和 CSS 文件。 引入外部的 JavaScript 文件&#xff1a; <script src"path/to/script.js"></script>src 属性指定了 JavaScript 文…

【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程

ubuntu 16.04 按照常规的Chrome 安装流程总是出错如下&#xff1a; Selecting previously unselected package google-chrome-stable. (Reading database ... 231747 files and directories currently installed.) Preparing to unpack google-chrome-stable_current_amd64.de…

阈值化分割,对灰度级图像进行二值化处理(数字图像处理大题复习 P8)

文章目录 画出表格求出灰度直方图 & 山谷画出结果图 画出表格 有几个0就写几&#xff0c;有几个1就写几&#xff0c;如图 求出灰度直方图 & 山谷 跟前面求灰度直方图的方法一样&#xff0c;找出谷底&#xff0c;发现结果为 4 画出结果图 最终的结果就是&#xf…

【Seata】seata的部署和集成

一、部署Seata的tc-server 1.下载 首先我们要下载seata-server包&#xff0c;地址在http://seata.io/zh-cn/blog/download.html 当然&#xff0c;课前资料也准备好了&#xff1a; 2.解压 在非中文目录解压缩这个zip包&#xff0c;其目录结构如下&#xff1a; 3.修改配置 修…