Laravel 的消息队列中 retry_after 与 timeout 不是很理解

我理解的消息队列,是将消息放在一个队列中,每次在消费的时候获取一条消息,对消息进行处理。
如果处理完成执行下一个消息。
但是如果某个消息处理过程中发生错误,这样可能会导致整个队列无法进行下去,这个时候引入处理超时。
设定一个时间,如果超过这个时间消息还没有执行完成,就放弃本次执行。
删除,或者再次压入队列中(对数据库操作,那种多个关联表操作,修改了第一个表,第二个表修改时有错误导致超超时就很尴尬,这要如何解决?事务?)
这样的话也不用两个判断,使用一个 timeout 就够了啊。
retry_after这个不知道有什么作用。感觉字面含义是重试,但这没有重试的机会啊。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

retry_after 失败任务重试间隔时间

4年前 评论

我看了官方的英文文档,我说一下我对retry_after属性的理解吧:就是比如说你把retry_after设置为20,好,假设现在有一个job它需要耗费15到25秒不等的时间来完成,假设处理job的那个程序在处理到第20秒还没完成时,它就不继续处理了,把这个job放回任务队列中,然后再尝试处理(retry),这次运气好,它处理到17秒就完成了,那就完事了,接着处理下一个job。

4年前 评论
williamQian 3年前
coder_russell 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!