为什么Laravel使用默认的队列连接, 即使我指定了一个不同的队列连接.

问题描述 投票:1回答:1

我在使用laravel队列时遇到了问题, 我的项目中, 默认的连接是同步的, 我想为一种类型的工作添加sql连接. 在我的项目中,默认连接是同步的,我想为一种类型的工作添加sql连接。

当我以这种方式调度工作时:

TestAction::dispatch()->onQueue('test');

工作会立即执行(通过同步连接).

如果我以这种方式调度作业。

TestAction::dispatch()->onQueue('test')->onConnection('sqsTestAction');

一切正常

队列 "test "在sqsTestAction连接中,为什么第一个例子中的作业是通过同步连接发送的?

我的configqueue.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版本

laravel laravel-5 amazon-sqs laravel-queue
1个回答
1
投票

为什么在第一个例子中,作业是通过同步连接发送的?

因为如你所见,它是默认设置的。改变 .env 档案值 QUEUE_CONNECTIONsqsTestAction 并成为默认值。在configqueue文件的默认键中,第二个参数是回退参数,用于当 .env 值不存在。

© www.soinside.com 2019 - 2024. All rights reserved.