我有以下问题要解决:
多个用户可以通过Web界面将作业提交到队列。 然后,通过数据库队列驱动程序将此作业存储在数据库中。
现在我的问题是:我希望队列运行所有作业,直到找到像$ queue-> pause()之类的作业,因为要运行下一个作业,我需要用户做一些确认。
我该怎么做?
我目前无法解决的“解决方案”是: 创建2种不同的工作类型:
队列处理所有ImageProcessingJobs,直到它遇到UserNotificationJob。 在UserNotificationJob-> handle()里面我调用了Artisan :: call(“queue:restart”);这阻止了队列。 此解决方案的问题是:UserNotificationJob也被删除。因此,如果我再次启动队列,队列将立即从Stillig ImageProcessingJobs开始,而无需等待实际确认。
我也对没有Queue系统的其他架构解决方案持开放态度。
答案 0 :(得分:1)
避免暂停队列的一种方法是在SyncEvent上使用UserNotificationJob wait(当用户确认回来时设置SyncEvent)。如果您愿意,可以将此等待超时,但是您需要将作业重新发布到队列中。如果您决定超时并重新发布,则可以使用作业链来设置作业之间的依赖关系,以便在UserNotificationJob竞争之前不能运行任何内容。
另一种方法可能是在用户发送确认之前简单地避免发布剩余的工作。