Laravel 5 Lumen 5.1 SQS队列配置
我使用Lumen创建了一个新项目,负责发送电子邮件和其他一些小任务。然而,对于一些需要发送的电子邮件,我想使用亚马逊的队列 在流明文件中,他们唯一提到的是: .env文件中的队列驱动程序选项确定应用程序将使用的队列“驱动程序” 我已经按照建议将其设置为SQS,但是我对实际的amazon凭证有点困惑。我该如何定义这些?我所看到的唯一“相关”的东西是亚马逊的文档和文档。我还安装了“aws/aws sdk php”:“~3.0”包 然而,这些资源指的是直接使用SQS的API。我希望能够调用Lumen中描述的队列,例如Laravel 5 Lumen 5.1 SQS队列配置,laravel-5,amazon-sqs,lumen,Laravel 5,Amazon Sqs,Lumen,我使用Lumen创建了一个新项目,负责发送电子邮件和其他一些小任务。然而,对于一些需要发送的电子邮件,我想使用亚马逊的队列 在流明文件中,他们唯一提到的是: .env文件中的队列驱动程序选项确定应用程序将使用的队列“驱动程序” 我已经按照建议将其设置为SQS,但是我对实际的amazon凭证有点困惑。我该如何定义这些?我所看到的唯一“相关”的东西是亚马逊的文档和文档。我还安装了“aws/aws sdk php”:“~3.0”包 然而,这些资源指的是直接使用SQS的API。我希望能够调用Lumen中
queue::push()
或$this->dispatch()
这是我的相关代码
这在我的.env文件中
QUEUE_DRIVER=sqs
AWS_KEY=key
AWS_SECRET=secretstuff
AWS_QUEUE=https://sqs.eu-west-1.amazonaws.com/
AWS_REGION=eu-west-1
这是我的控制器
<?php namespace App\Http\Controllers;
use App\Jobs\GuestEmailJob;
use Laravel\Lumen\Routing\Controller as BaseController;
use Log, Queue;
use Aws\Sqs\SqsClient;
class NotificationEmailController extends BaseController
{
public function pushToQueue($id)
{
Queue::push(new GuestEmailJob($id));
//$this->dispatch(new GuestEmailJob($id));
}
}
仔细查看源代码后,显然您应该在config目录下有queue.php config文件。所以我刚刚粘贴了Laravel5的默认配置文件,并对其进行了自定义,现在它可以正常工作了。毕竟,这是一个相当愚蠢的问题,但从文档本身来看并不清楚。这里是默认的队列配置,以防有人也遇到这种情况
<?php
return [
'default' => env('QUEUE_DRIVER', 'sync'),
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'ttr' => 60,
],
'sqs' => [
'driver' => 'sqs',
'key' => 'your-public-key',
'secret' => 'your-secret-key',
'queue' => 'your-queue-url',
'region' => 'us-east-1',
],
'iron' => [
'driver' => 'iron',
'host' => 'mq-aws-us-east-1.iron.io',
'token' => 'your-token',
'project' => 'your-project-id',
'queue' => 'your-queue-name',
'encrypt' => true,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'expire' => 60,
],
],
'failed' => [
'database' => 'mysql', 'table' => 'failed_jobs',
],
];
然后将其添加到app.php文件中:$app->configure('queue')代码>:)
<?php
return [
'default' => env('QUEUE_DRIVER', 'sync'),
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'ttr' => 60,
],
'sqs' => [
'driver' => 'sqs',
'key' => 'your-public-key',
'secret' => 'your-secret-key',
'queue' => 'your-queue-url',
'region' => 'us-east-1',
],
'iron' => [
'driver' => 'iron',
'host' => 'mq-aws-us-east-1.iron.io',
'token' => 'your-token',
'project' => 'your-project-id',
'queue' => 'your-queue-name',
'encrypt' => true,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'expire' => 60,
],
],
'failed' => [
'database' => 'mysql', 'table' => 'failed_jobs',
],
];