Laravel消息队列怎么使用
使用database驱动做队列
下面是简单使用教程
1. 修改.env文件配置
QUEUE_CONNECTION=sync改成QUEUE_CONNECTION=database
默认的sync是同步队列
2. 添加消息队列的mysql表
php artisan queue:table
php artisan migrate
3. 创建任务类
php artisan make:job WangZhaoBo
然后生成该路径文件\app\Jobs\WangZhaoBo.php
打开改文件,复制下面的代码覆盖掉生成代码
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class WangZhaoBo implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $name;
// //这里可以声明最大尝试次数
// public $trie = 3;
// //优先执行service队列
// php artisan queue:work --queue=service,default --tries=3
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($name)
{
$this->name = $name;
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
sleep(2);
$res = file_put_contents('abcdef.log',$this->name.date('Y-m-d H:i:s').PHP_EOL,FILE_APPEND);
// if ($res===false) {
// // 延迟 10s 后推送,默认是 0,表示立即推送
// $this->release(10);
//你可以可以根据已执行次数依次递增延迟时间:
// $this->release(10 * $this->attempts());
// }
}
//failed_jobs
// 任务执行失败后发送邮件通知给相关人员
public function failed(\Exception $exception){
Mail::to($this->service->developer->email)->send('...');
}
}
4. 运行消息队列
php artisan queue:work
5. 调用消息队列
这两个方法返回值不同,可方法一返回的是mysql表的id.方法二是返回队列的对象.可以自己打印一下看看
delay(10)是延迟10秒执行
//方法一
$this->dispatch((new WangZhaoBo('王召波'))->delay(10));
//方法二
WangZhaoBo::dispatch('王召波')->delay(10);
把上面的方法放到控制器里面,然后访问一下.
你会看到命令窗口显示
[2021-01-28 13:59:42][333] Processing: App\Jobs\WangZhaoBo
[2021-01-28 13:59:42][333] Processed: App\Jobs\WangZhaoBo
然后你在项目根目录会生成一个abcdef.log文件
注意事项
- 因为队列是常驻进程,所以队列类WangZhaoBo内容修改的时候,需要重新启动队列才能生效
在window使用cmd窗口运行队列之后,再使用restart之后,之前队列会自动断掉.
>php artisan queue:restart
>php artisan queue:work
- 如果你的队列类报错了,队列一直执行,表中的attempts字段到255之后.
队列就不执行了,这个时候把255改成0再去执行队列
参考:
https://learnku.com/docs/laravel/5.7/queues/2286#connections-vs-queues
https://blog.csdn.net/qq_39173140/article/details/98491547
https://blog.csdn.net/chen529834149/article/details/76918406/
https://wiki.jikexueyuan.com/project/laravel-5.1/queue.html
Laravel消息队列怎么使用的更多相关文章
- Lumen开发:结合Redis实现消息队列(3)
4.运行队列监听器 开启任务监听器 Lumen包含了一个Artisan命令用来运行推送到队列的新任务.你可以使用queue:listen命令运行监听器: php artisan queue:liste ...
- laravel的延迟消息队列
laravel的延迟消息队列 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能(http://mp.weixin.qq.com/s?__biz=MjM5ODYx ...
- laravel的消息队列剖析
laravel的消息队列剖析 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能 在实际工作中也不止遇见过一次这个问题,我在想着以前是怎么处理的呢?我记得当初在上 ...
- php laravel v5.1 消息队列
* install https://laravel.com/docs/5.1#installationcomposer create-project laravel/laravel msgq &quo ...
- redis实现消息队列
业务需求 本文是以laravel框架来介绍redis队列,具体用法你可以参考http://www.cnblogs.com/lengthuo/p/7277260.html最近接受一个很简单的东西,(说起 ...
- 消息队列Queue大全
消息队列Queue大全 (http://queues.io/) 作业队列,消息队列和其他队列.几乎所有你能想到的都在这. 关于 那里有很多排队系统.他们每个人都不同,是为解决某些问题而创建的.这个页面 ...
- php和redis怎么实现消息队列
把瞬间服务器的请求处理换成异步处理,缓解服务器的压力,实现数据顺序排列获取.本文主要和大家分享php和redis如何实现消息队列,希望能帮助到大家. redis实现消息队列步骤如下: 1).redis ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- 消息队列 Kafka 的基本知识及 .NET Core 客户端
前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...
随机推荐
- 「LOJ 6373」NOIP2017 普及组题目大融合
NOIP2017 普及组题目大融合 每个读者需要有某个后缀的书,可以暴力map,复杂度\(o(9*nlog(n))\),也可以反串建trie树,复杂度\(o(9*n)\). 故可以求出需要的最少的RM ...
- go http 中间件
- EKS助力小白实践云原生——通过k8s部署wordpress应用
目前云原生在大厂已经有了充分的实践,也逐渐向小厂以及非互联网公司推广.适逢12月20日,腾讯云原生[燎原社]精心打造了云原生在线技术工坊,让零基础的同学也能快速入门和实践 Docker 和 Kuber ...
- htc 简单的移动效果
转载请注明来源:https://www.cnblogs.com/hookjc/ 1.创建 HTC 文件的架构.一个标准的 HTC 文件含有一个 SCRIPT 块和一对可选的 COMPONENT 标记. ...
- js中(function(){}()),(function(){})(),$(function(){});之间的区别
1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Express ...
- python基础——异常处理、递归
异常处理 while True: try: num1 = int(input('num1:')) num2 = int(input('num2:')) result = num1 + num2 exc ...
- 大前端工程化之写一个简单的webpack插件
今天写一个简单的webpack插件,来学习一下webpack插件 webpack插件机制可以使开发者在webpack构建过程中加入自己的行为,来针对自己项目中的一些需求做一些定制化 首先我们得知道一个 ...
- 基于XC7A100T的PCIe千兆电口以太网收发卡
一.板卡概述 本板卡采用Xilinx公司的Artix7系列的XC7A100T-2FGG484 芯片作为主处理器.包含双路千兆电口网络,双组DDR,PCIeX1 V1.1接口,板卡设计满足工业级要求. ...
- Solution -「CF 510E」Fox And Dinner
\(\mathcal{Description}\) Link. 给定正整数集合 \(\{a_n\}\),求一种把这些数放置在任意多个圆环上的方案,使得每个环的大小大于 \(2\) 且环上相邻两 ...
- Solution -「ARC 104D」Multiset Mean
\(\mathcal{Description}\) Link. 读题时间≈想题时间,草.( 给定 \(N,K,M\),对于每个 \(x\in[1,N]\) 的整数 \(x\),统计多重集 ...