队列中,队列 A 和队列 B,如何高并发的情况下,依旧队列 A 执行完成以后再执行队列 B?

问题描述:

队列中如何保证俩个队列依次执行,即前一个执行完成以后,再执行后一个。使用的horizon管理redis队列

流程描述

项目中实现的是一个api接口,接收一个java项目发送的POST数据,我这边要做的就是把数据加入队列,然后队列中插入数据库操作。

  • 接收到请求A的时候,创建队列A
  • 接收到请求B的时候,创建队列B
  • 请求A请求B数据是有关联的,
  • 队列B必须要在队列A执行结束以后才能执行。
    我的解决方法是队列A的queueName设置为high,队列B的queueName设置为low。但是这种方式有时候在高并发的情况下,队列A的数据还未插入数据库,队列B就执行了,造成队列B报错,请问应该如何解决这种情况?

laravel文档中的工作链withChain可以实现多个队列任务依次分发,但是这是在一个请求周期的,我这种情况应该不适用。

版本:
laravel version:5.5

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

队列 B 在执行之前先检查必要的数据是否存在,如果不存在就调用 release 把自己放回队列

4年前 评论
acehua 3年前
讨论数量: 2
leo

队列 B 在执行之前先检查必要的数据是否存在,如果不存在就调用 release 把自己放回队列

4年前 评论
acehua 3年前
xiaopi

@leo 明白了,十分感谢

4年前 评论

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