队列中,队列 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
队列 B 在执行之前先检查必要的数据是否存在,如果不存在就调用 release 把自己放回队列