laravel5.1redis队列重复执行问题
来源:互联网 发布:策略模式 java的概念 编辑:程序博客网 时间:2024/06/07 02:36
按照官方邮件发送配置完后,将任务添加到队列中,
$job = (new SendReminder($withdrawal))->onQueue('emails')->delay(10);
$this->dispatch($job);
然后服务端启动队列监听,
php artisan queue:listen --queue=emails
却发现任务一直执行,也就是一直会收到邮件。
按理说,生产者将任务加入队列,消费者从队列中取任务消费,应该是先进先出,只执行一次才对呀,可是为什么会一直执行?
安装上redisadmin后查看,发现添加的任务一直保留在队列中,没有被取走(删除)。并且这条任务的状态变为了reserved(保留的)。
然后在网上发现了这篇文章(http://yansu.org/2014/04/11/redis-queue-in-laravel.html),它讲了laravel使用redis作为队列系统的执行流程。
其中讲了什么情况下任务的状态会变为reserved。
像我这种发送通知的任务,正好可以用到。只发送一次(有可能失败,准确性要求不是很高),在handle方法开始加上
$this->job->delete();后,任务就只会最多执行一次了。
最后总结一下怎样才能尽快的发现问题和解决问题:
第一,要从不同的角度(或者眼光)看待同一个问题,就像盲人摸象一样,你可能看到的只是一条腿,只有你接触了耳朵、鼻子...,才能认识真正的问题是什么;这里面是指不要在同一个方向上面纠结,有时候换个角度验证可以更早地发现真正的问题所在;
第二,工具的使用,专业的工具相比(蹩脚的工具),可能会使你发现问题和解决问题的能力提高10倍;在这个问题里面是指redisadmin和redis命令行;
2 0
- laravel5.1redis队列重复执行问题
- PHP - Redis队列解决执行速度问题
- php laravel5.1配置redis
- laravel5.5集成FFmpeg,redis队列异步视频转码
- Quartz重复执行问题
- laravel5.3使用redis管理session解决session共享问题
- redis队列一些问题
- laravel5.2 使用redis
- 使用redis分布式锁解决spring schedule集群部署重复执行问题
- pageload重复执行的问题
- 重复执行addEventListener的问题
- 关于 Handler 重复执行 问题
- Tomcat启动重复执行问题
- strus2 action重复执行问题
- 调试笔记 — Redis 消息队列发布信息被消费者重复订阅多次牵扯到的 Tomcat 配置问题 [#00001]
- hive 的执行队列问题
- laravel5搭建过程问题
- 集群下spring定时器重复执行问题
- Java File文件操作
- zeppelin下写python程序
- ubuntu terminator字体挤在一起问题 大小设置
- rbac数据库设计
- U盘安装centos 7,恢复原有win7引导区
- laravel5.1redis队列重复执行问题
- union与union all的共同点与区别
- Ubuntu16.04如何截图,Ubuntu16.04如何裁剪图片,Ubuntu16.04如何打马赛克
- 啦啦啦,弱菜要在这里直播自己的进步
- 如何将dataframe转换为rdd类型
- 自定义TextView实现跑马灯效果
- EventBus源码分析
- android 代码设置、打开wifi热点及热点的连接
- XMG 核心动画与UIView动画的区别