laravel 队列之坑
批量发消息之类的工作,很是适合放到后端,慢慢处理。那使用laravel的Queue和Job,就成为必须。
简单过了一下文档后,就写好了发布上线了。感觉确是不错。
不过近期突然爆了一个奇怪的问题,有些群发总是没完没了的重复发送。但是当我测试时,总是一切正常!
一时蒙了个逼!又是debug(队列的debug很是繁琐低效!)又是Google又是百度。一翻搜罗,有人说是时间的问题。
60s!
队列将一个任务发出后,如果60s内没执行完,就会认为处理过程异常。它会把这个任务再重新执行一遍!
嘿嘿了!
翻了下源码,在InteractsWithQueue
的trait
里发现了一个delete
方法!
在我的Job
开始handle
后,先执行一下$this->delete();
把这个任务删除。这样即便过了60s后,它想重新启动也没有了。这问题也就暂时解决了!
但是!如果这个任务处理过程中出现异常,也会丧失2次重新执行的机会。所以Laravel的Job中最好只处理一件简单的原子化的事。不要在批量里处理批量。
- 本文标题:laravel 队列之坑
- 本文作者:jf wang
- 创建时间:2016-12-13 23:21:09
- 本文链接:https://www.wangjunfeng.com.cn/2016/12/13/laravel-queue/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!