当前位置: 首页 > news >正文

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

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

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

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

php artisan make:job DyUploadResource

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

<?phpnamespace 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)分发任务【如何使用】

<?phpnamespace 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.lryc.cn/news/173748.html

相关文章:

  • Dependency ‘org.redisson:redisson:‘ not found解决方法 三种刷新Maven项目的方法
  • Mysql高级——索引优化和查询优化(1)
  • Oracle for Windows安装和配置——Oracle for Windows数据库创建及测试
  • 【1993. 树上的操作】
  • LeetCode【1. 两数之和】
  • 3D成像技术概述
  • Centos7 安装部署 Kubernetes(k8s) 高可用集群
  • c++加速方法大全
  • 【国科大卜算】Truck History 最小生成树Prim
  • SQLAlchemy映射表结构和对数据的CRUD
  • Spring boot原理
  • 技术贴 | 深度解析 PostgreSQL Protocol v3.0(二)— 扩展查询
  • HDFS编程实践-从HDFS中下载指定文件到本地
  • 安防监控视频AI智能分析网关:人流量统计算法的应用场景汇总
  • 第一百五十二回 自定义组件综合实例:游戏摇杆三
  • 多线程的学习中篇上
  • 非标准化套利
  • 从CNN(卷积神经网络),又名CAM获取热图
  • kafka消费者多线程开发
  • 布局设计和实现:计算器UI【TableLayout、GridLayout】
  • stack与queue的简单封装
  • ChatGPT使用技巧整理
  • 机器学习笔记 - 维度诅咒的数学表达
  • 组合计数训练题解
  • P1095 [NOIP2007 普及组] 守望者的逃离
  • Python函数绘图与高等代数互融实例(八):箱线图|误差棒图|堆积图
  • 联想y7000 y7000p 2018/2019 不插电源 不插充电器, 直接关机 ,电量一直89%/87%/86%,V0005如何解决?
  • stm32与esp8266通信
  • 组合数 2.1 2.2
  • 【数组的中心位置】python实现-附ChatGPT解析