队列中,队列 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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
leo
最佳答案

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

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

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

3年前 评论
acehua 3年前
xiaopi

@leo 明白了,十分感谢

3年前 评论

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