2

使用 laravel 5.5,我们需要同时使用 Redis 和 SQS 队列。Redis 用于我们的内部消息传递,SQS 用于来自第 3 方的消息。

config/queue.php有各种连接信息。第一个键是默认连接。该默认值是queue:workartisan 命令使用的默认值。

'default' => 'redis',

'connections' => [
    'sqs' => [            
        'driver' => 'sqs',
        'key'    => env('ACCESS_KEY_ID', ''),
        'secret' => env('SECRET_ACCESS_KEY', ''),
        'prefix' => 'https://sqs.us-west-1.amazonaws.com/account-id/',
        'queue'  => 'my-sqs-que'),
        'region' => 'us-west-1',
    ],


    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUE' , 'default'),
        'retry_after' => 90,
    ],

问题是我们如何使用不同的队列连接queue:work

如果--queue=my-sqs-que提供了,默认连接设置为redis,laravel在redis下查找,显然没有找到my-sqs-que

将默认设置为 sqs 将禁用处理我们的内部消息。

4

1 回答 1

2

您可以在运行时指定连接queue:work,请参阅指定连接和队列

您还可以指定工作人员应该使用哪个队列连接。传递给 work 命令的连接名称应与 config/queue.php 配置文件中定义的连接之一相对应:

php artisan queue:work redis

您还需要为每个队列设置相应的连接。

但是,任何给定的队列连接都可能有多个“队列”,这些“队列”可以被认为是不同的堆栈或排队作业的堆。

于 2018-07-16T14:46:56.540 回答