运行 Laravel 中不同连接上的多个队列

Running multiple queues on different connections in Laravel

我遇到过通过默认数据库队列有常规作业 运行 的情况,因此配置看起来像

conf/queue.php:
    'default' => env('QUEUE_CONNECTION', 'sync'),

.env:
    QUEUE_CONNECTION=database

现在,一切正常,但是,我需要为需要 运行 同步的队列添加一个特定案例(转换用户提交的需要立即出现的媒体)

我试过在 conf/queue.php 中配置一个名为 medialibrry 的新队列,如下所示:

    'medialibrary' => 'sync', 

并在名为 medialibrary 的队列中触发必要的作业。但是,Laravel 做的唯一一件事仍然是使用数据库连接,只是插入新行,这些行的 queue 列设置为 medialibrary 而不是实际上像我在 conf/queue.php.

中定义的那样使用“同步”

如何为不同的队列使用不同的队列驱动程序?

编辑:谢谢@kjones 的回复,我看到这是通过 ->onConnection('method') 完成的。但是,如果有人对需要专门同步的 Spatie 媒体库有疑问,我发现有一个 ->nonQueued() 方法。

您混淆了队列名称和队列驱动程序。您的 queue.php 配置必须如下所示:

 'connections' => [
        // other connections
        'medialibrary' => [
            'driver' => 'sync',
        ],
  ]

而且你可以同步调度作业:

ProcessMedia::dispatch($media)->onQueue('medialibrary');

使用onConnection()方法如下(使用Laravel queues documentation page中的播客示例):

ProcessPodcast::dispatch($podcast)->onConnection('sync');