为什么 Laravel 使用默认队列连接,即使我指定了具有不同连接的队列
Why Laravel uses the default queue connection even if I specified a queue with different connection
我对 laravel 队列有疑问。在我的项目中,默认连接是同步的,我想为一种类型的作业添加 sqs 连接。
当我这样派工时:
TestAction::dispatch()->onQueue('test');
作业立即执行(通过同步连接)。
如果我这样派工:
TestAction::dispatch()->onQueue('test')->onConnection('sqsTestAction');
一切正常
队列 "test" 在 sqsTestAction 连接中,为什么第一个示例中的作业是通过同步连接发送的?
我的config/queue.php:
'default' => env('QUEUE_CONNECTION', 'sync'),
'connections' => [
'sync' => [
'driver' => 'sync',
],
'sqsTestAction' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('AWS_SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => "test",
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
],
Laravel 版本 5.8
why in first example job is being sent by sync connection?
因为如您所见,它是默认设置的。将 QUEUE_CONNECTION
的 .env
文件值更改为 sqsTestAction
,这将成为默认值。
在 config/queue 文件的默认键中,第二个参数是当 .env
值不存在时的回退参数。
我对 laravel 队列有疑问。在我的项目中,默认连接是同步的,我想为一种类型的作业添加 sqs 连接。
当我这样派工时:
TestAction::dispatch()->onQueue('test');
作业立即执行(通过同步连接)。
如果我这样派工:
TestAction::dispatch()->onQueue('test')->onConnection('sqsTestAction');
一切正常
队列 "test" 在 sqsTestAction 连接中,为什么第一个示例中的作业是通过同步连接发送的?
我的config/queue.php:
'default' => env('QUEUE_CONNECTION', 'sync'),
'connections' => [
'sync' => [
'driver' => 'sync',
],
'sqsTestAction' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('AWS_SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => "test",
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
],
Laravel 版本 5.8
why in first example job is being sent by sync connection?
因为如您所见,它是默认设置的。将 QUEUE_CONNECTION
的 .env
文件值更改为 sqsTestAction
,这将成为默认值。
在 config/queue 文件的默认键中,第二个参数是当 .env
值不存在时的回退参数。