如何防止重复添加 job 到队列?

如题,如果在添加job到队列的时候,先检测是否已添加了,有什么比较好的方法

codejam
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
leo
最佳答案

根据 Laravel 目前的设计,这个需求无解。可能需要找别的方案来规避这种情况,比如在 Job 里判断是否已经被执行过了,但也有缺点就是假如一个 Job 在同一时间被添加多次到队列中,同时又有多个 worker 同时消费了这个 Job,就会出问题。

6年前 评论
讨论数量: 3
leo

根据 Laravel 目前的设计,这个需求无解。可能需要找别的方案来规避这种情况,比如在 Job 里判断是否已经被执行过了,但也有缺点就是假如一个 Job 在同一时间被添加多次到队列中,同时又有多个 worker 同时消费了这个 Job,就会出问题。

6年前 评论
codejam

@leo 目前我是在新增到队列前在MYSQL数据库里标记判断的

6年前 评论
shubiao-yao

入队列的时候先得到这个Job的标识符写入cache,下次再触发的时候现判断cache中有没有这个标识符,有的话就跳过,没有的话就入队列。 不知道这样是否可以解决你们的业务需求。 :smiley:

6年前 评论

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