gpt4 book ai didi

laravel-5 - Lumen 5.1 SQS 队列配置

转载 作者:行者123 更新时间:2023-12-04 23:44:50 28 4
gpt4 key购买 nike

我使用 Lumen 创建了一个新项目,以处理发送电子邮件和其他一些小任务。但是,对于一些需要发送的电子邮件,我想使用亚马逊的队列。

在 Lumen 的文档中,他们唯一提到的是:
.env 文件中的 QUEUE_DRIVER 选项决定了应用程序将使用的队列“驱动程序”。

我已按照建议将其设置为 SQS,但是我对实际的亚马逊凭据感到有些困惑。我应该如何定义这些?我看到的唯一“相关”的东西来自亚马逊的文档 herehere .我还安装了 "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

这是我的 Controller
<?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));
}
}

最后这是我的工作
<?php namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;
use Log;

abstract class GuestEmailJob implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;

public function handle($id)
{
Log::info('within handle');
$user = User::find($id);
}
}

我用 Queue::push 都试过了和 $this->dispatch() .当请求到达 Controller 时,一切正常,直到推送到队列,然后什么也没有发生(也没有异常(exception))。任何人都知道我做错了什么/遗漏了什么?

最佳答案

在查看源代码后,显然您应该在 config 目录下有 queue.php 配置文件。所以我只是粘贴了 laravel 5 中的默认配置文件并对其进行了自定义,现在它可以正常工作了。毕竟很愚蠢的问题,但文档本身并不清楚。这是默认队列配置,以防万一有人也遇到这个问题。

<?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',
],

];

关于laravel-5 - Lumen 5.1 SQS 队列配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211863/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com