代码之家  ›  专栏  ›  技术社区  ›  aknosis

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

  •  0
  • aknosis  · 技术社区  · 8 年前

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

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

    App1为Laravel 5.4,App2为5.6(如有必要)

    1 回复  |  直到 8 年前
        1
  •  2
  •   Diego Ponciano    8 年前

    是的,这是可能的,首先解释一下如何以及为什么:

    php artisan queue:work, listen, etc 将去检查 jobs 如果未在artisan命令all上指定队列,则执行位于此处的任何挂起作业 default 将执行队列作业。因此,可以执行作业,但当两个应用程序的代码不同时,作业将失败。

    Laravel将序列化负载并执行该操作,但如果您的负载对应用程序未知,则应用程序当然会失败。

    您可以做的是对每个队列进行“分类”,并且只运行 app_1 的作业 App 1 app_2 的作业 App 2

    例如,您将在应用程序1上使用artisan命令

    php artisan queue:work database --queue=app_1

    应用程序2上的此命令:

    php artisan queue:work database --queue=app_2

    因此,您可以在数据库本身上看到这一点 工作岗位 桌子 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