Queue类上是否有一个方法可以指定队列配置中定义的特定连接? MySql有一个类似的选项,你可以在其中定义'mysql2',然后调用:
DB::connection('mysql2')->table('etc')->get();
队列有类似的选项吗?
类似的东西:
Queue::connection('sqs2')->push('MyQueue', array('message' => $message));
答案 0 :(得分:14)
显然我在没有意识到的情况下回答了我自己的问题。您可以拥有多个队列,并使用连接方法指定要将消息推送到哪个队列。
以下是我感兴趣的人的部分配置:
'default' => 'sqs',
'connections' => array(
'sync' => array(
'driver' => 'sync',
),
'beanstalkd' => array(
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
),
'sqs' => array(
'driver' => 'sqs',
'key' => 'xxxxxxxxxxxx',
'secret' => 'yyyyyyyyyyyyyy',
'queue' => 'https://sqs.us-west-2.amazonaws.com/zzzzzzzzz',
'region' => 'us-west-2',
),
'sqs2' => array(
'driver' => 'sqs',
'key' => 'uuuuuuuuuuuuu',
'secret' => 'vvvvvvvvvvvvvvvv',
'queue' => 'https://sqs.us-west-2.amazonaws.com/wwwwwwwwwww',
'region' => 'us-west-2',
),
答案 1 :(得分:1)
您只需配置一个与SQS的连接,然后与其他驱动程序(如Redis或数据库)不同,如果您要使用其他队列名称发送作业,则该队列应先前存在,可在Amazon控制台中或使用SDK /创建api,然后在分派作业时通过它:
dispatch(new MyJob)->onConnection('sqs')->onQueue('https://sqs.us-east-1.amazonaws.com/{account_id}/{queue_name}');
通过这种方式,您仅配置一个连接,并且在该连接中具有多个队列
最后一次像egekhter那样处理Job
php artisan queue:work sqs --queue='https://sqs.us-east-1.amazonaws.com/{account_id}/{queue_name}'
您还可以配置多个连接,但是由于所有连接都在相同的帐户和凭据中,因此这似乎是不必要的,并且对于同一个环境中的多个队列来说,这似乎是完美的用例。