ege*_*ter 11 amazon-sqs laravel laravel-4
Queue类上是否有一个方法可以指定队列配置中定义的特定连接?MySql有一个类似的选项,你可以在其中定义'mysql2',然后调用:
DB::connection('mysql2')->table('etc')->get();
Run Code Online (Sandbox Code Playgroud)
队列有类似的选择吗?
就像是:
Queue::connection('sqs2')->push('MyQueue', array('message' => $message));
Run Code Online (Sandbox Code Playgroud)
ege*_*ter 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',
),
Run Code Online (Sandbox Code Playgroud)
您只配置一个到 SQS 的连接,然后与 redis 或数据库等其他驱动程序不同,如果您想以不同的队列名称发送作业,则该队列应该先前存在,在亚马逊控制台或使用 SDK/api 创建它,然后在像这样调度作业时传递它:
dispatch(new MyJob)->onConnection('sqs')->onQueue('https://sqs.us-east-1.amazonaws.com/{account_id}/{queue_name}');
Run Code Online (Sandbox Code Playgroud)
这样你只配置了一个连接,并且在那个连接中有多个队列
对于像 egekhter 响应中那样处理 Job 的最后一步,
php artisan queue:work sqs --queue='https://sqs.us-east-1.amazonaws.com/{account_id}/{queue_name}'
Run Code Online (Sandbox Code Playgroud)
您还可以配置多个连接,但似乎没有必要,因为它们都在同一个帐户和凭据中,而且这似乎是同一 conexion 中多个队列的完美用例。
| 归档时间: |
|
| 查看次数: |
4982 次 |
| 最近记录: |