为多个队列共享一个laravel数据库表

时间:2018-03-17 00:02:56

标签: laravel queue

我在使用相同数据库的同一台服务器上有两个单独的Laravel应用程序。目前,App1是唯一需要队列的人,因此它与数据库驱动程序一起运行。

现在我需要在App2上运行作业。我可以简单地从App2运行队列工作程序,只要我将app1和app2保留在不同的默认队列上吗?

App1是Laravel 5.4,App2是5.6(如果重要的话)

1 个答案:

答案 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_2jobs列,您会看到所有列都添加到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