我在使用相同数据库的同一台服务器上有两个单独的Laravel应用程序。目前,App1是唯一需要队列的人,因此它与数据库驱动程序一起运行。
现在我需要在App2上运行作业。我可以简单地从App2运行队列工作程序,只要我将app1和app2保留在不同的默认队列上吗?
App1是Laravel 5.4,App2是5.6(如果重要的话)
答案 0 :(得分:1)
是的,首先可以解释一下如何以及为什么:
php artisan queue:work, listen, etc
将检查jobs
db表并执行位于那里的任何挂起作业,如果未在artisan命令上指定队列,则将执行所有default
队列作业。因此,会执行作业,但在代码中两个应用程序不同时它们将失败。
Laravel将序列化有效负载并将执行,但如果您的应用程序未知的有效负载当然会失败。
您可以执行的操作是“对每个队列进行”分类,仅针对app_1
的{{1}}和App 1
个作业运行app_2
个作业。
因此,例如,您将在App 1上使用这样的artisan命令
App 2
App 2上的这个命令:
php artisan queue:work database --queue=app_1
因此,您可以在数据库本身上看到这一点,看一下php artisan queue:work database --queue=app_2
表jobs
列,您会看到所有列都添加到queue
这是您可以在注册队列的时间。
当然,如果你将它们升级到L5.6,那将是最好的,但它们应该可以工作,因为它没有改变AFAIK。
参考此处:
https://laravel.com/docs/5.6/queues#customizing-the-queue-and-connection https://laravel.com/docs/5.6/queues#queue-workers-and-deployment