运行 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');
我遇到过通过默认数据库队列有常规作业 运行 的情况,因此配置看起来像
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');