前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >laravel 模型事件,消息队列容器,驱动异步,添加任务,消费任务

laravel 模型事件,消息队列容器,驱动异步,添加任务,消费任务

作者头像
友儿
发布2022-09-11 12:53:22
5160
发布2022-09-11 12:53:22
举报
文章被收录于专栏:友儿友儿
配置使用数据库作为任务存储驱动

代码语言:javascript
复制
#config/queue.php文件中
'default' => env('QUEUE_CONNECTION', 'sync'),默认是同步。
QUEUE_CONNECTION对应.env中的QUEUE_CONNECTION
我们修改.env文件使用mysql数据库作为驱动:QUEUE_CONNECTION=database 
数据迁移(驱动的必要设置)说白了就是创建存储队列任务的数据表
代码语言:javascript
复制
#在database/migrations文件夹下面生成迁移文件
xxxx_xx_xx_xxxxxx_create_jobs_table.php
xxxx_xx_xx_xxxxxx_create_failed_jobs_table.php

php artisan queue:table         #处理任务
php artisan queue:failed-table  #处理失败的任务
#运行迁移文件
php artisan migrate
会在数据库生成 xxx_jobs和xxx_failed_jobs两张表(xxx为表前缀)
生成观察者类并关联模型
代码语言:javascript
复制
php artisan make:observer NoticeObserver -m Models/Notice
#说明NoticeObserver类中方法
#添加之后调用
public function created(Notice $notice){}
#修改之后调用
public function updated(Notice $notice){}
#伪删除之后调用
public function deleted(Notice $notice){}
#伪删除还原之后调用
public function restored(Notice $notice){}
#强制删除之后调用
public function forceDeleted(Notice $notice){}
在对应模型(Models/Notice)中注册该观察者
代码语言:javascript
复制
#这样在操作添加修改等一系列动作时NoticeObserver会作为观察者去执行对应的方法去生成任务插入表中,等待消费者消费。
    protected static function boot()
    {
        parent::boot();
        //注册自定义观察类
        self::observe(NoticeObserver::class);
    }
添加任务类 Jobs/NoticeJob.php
代码语言:javascript
复制
 php artisan make:job NoticeJob
#说明
 #该方法执行任务
 public function handle()
 {
       sleep(10);#默认异步延时
 }
发布上一步中编写的任务,这里模拟在创建后生成然后消费
代码语言:javascript
复制
#在观察者类(NoticeObserver的created方法)中发布任务
 public function created(Notice $notice)
 {
        //发布任务
        dispatch(new NoticeJob());
  }
消费任务
代码语言:javascript
复制
php artisan queue:work

更多介绍请移步到官方文档队列

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置使用数据库作为任务存储驱动
  • 数据迁移(驱动的必要设置)说白了就是创建存储队列任务的数据表
  • 生成观察者类并关联模型
  • 在对应模型(Models/Notice)中注册该观察者
  • 添加任务类 Jobs/NoticeJob.php
  • 发布上一步中编写的任务,这里模拟在创建后生成然后消费
  • 消费任务
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档