- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Lumen 创建了一个新项目,以处理发送电子邮件和其他一些小任务。但是,对于一些需要发送的电子邮件,我想使用亚马逊的队列。
在 Lumen 的文档中,他们唯一提到的是:
.env 文件中的 QUEUE_DRIVER 选项决定了应用程序将使用的队列“驱动程序”。
我已按照建议将其设置为 SQS,但是我对实际的亚马逊凭据感到有些困惑。我应该如何定义这些?我看到的唯一“相关”的东西来自亚马逊的文档 here和 here .我还安装了 "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));
}
}
<?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/
我想在 lumen 中配置文件系统路径,而 lumen 没有提供配置文件夹设置文件系统本地路径怎么办? 最佳答案 在注册服务提供商之前,将以下内容放入您的 bootstrap/app.php 中: $
我想知道如何向 Lumen 中的路由添加查询参数 这是我创建的路线的示例 $app->get('/product/{apikey}','ProductController@getProduct');
我在 Lumen 中有一个类似于 Laravel 的错误消息标准文件夹。问题是没有使用来自那里的消息。如何让 Lumen 使用我的翻译来格式化消息? 现在,当我转储 $validator->error
默认情况下,Lumen “与 Laravel 相同” 有 myApp/public 目录来放置所有公共(public)文件( Assets )。 我想将该目录路径从 myApp/public 更改为
如何在 Lumen 中使用 where 方法 Route::get('/talent/{id}', 'TalentController@talent')->where('id', '[0-9]+');
默认情况下,Lumen “与 Laravel 相同” 有 myApp/public 目录来放置所有公共(public)文件( Assets )。 我想将该目录路径从 myApp/public 更改为
好的,我对 lumen 和 laravel 还很陌生,我正在尝试制作这个 api https://packagist.org/packages/codenexus/lumen-geoip在 lumen
我在 laravel/lumen 中声明了一个路由组,如下所示: $app->group(['middleware' => 'auth'], function () use ($app) {
我正在尝试集成 Oauth2 身份验证,发现 Taylor Otwell 使用 Laravel Passport 为它做了很好的工作。我正在尝试集成相同的内容以创建 REST API,我用谷歌搜索集成
如何在 Lumen 框架中对自定义数组执行验证。例如: 示例数组: $params = array('name' => 'john', 'gender' => 'male'); 我试过类似的方法,
我正在使用 Lumen 队列。要启动正在处理的作业,文档指示要从命令行运行队列监听器,如下所示: php artisan queue:listen 我想直接从我的代码触发我的队列作业进程。怎么做? 最
我在 Lumen 中,在一个 Controller 中,我想以一种简单易行的方式缓存计算结果,而不使用数据库或外部服务,所以我正在寻找将缓存保存在文件系统中。在 Laravel's documenta
流明日志被写入/storage/logs,默认情况下被命名为lumen.log。如何将文件名更改为xyz.log? 最佳答案 如注释中所述,日志文件的位置和名称是硬编码的。 现在,如果出于某些令人信服
我正在尝试在我的 Lumen 应用程序中启用基本用户身份验证用户名和密码。 在 app.php 文件中,以下内容已取消注释,如 https://lumen.laravel.com/docs/5.4/a
我正在尝试了解如何更改 Lumen 项目的默认存储位置(包括其子文件夹)。出于多种原因,考虑到生产 Web 服务器的当前配置,Lumen 在尝试写入日志或编译 Blade View 时抛出权限被拒绝的
我是 Lumen 和 Laravel 的新手,但我必须使用 Lumen 编写 REST API。我已经设置了 Controller ,但在使用记录器时遇到问题。我已遵循文档:Lumen docs 这是
我正在使用 Laravel 的 Lumen 框架学习后端开发,并且正在编写数据库播种类(class) Laravel's documentation 。下面是代码: 模型app\Photo.php n
我正在尝试在我公司的项目中实现单元测试,但我在尝试使用我的数据库中的一组单独数据时遇到了一些奇怪的问题。 由于我希望在受限环境中执行测试,因此我正在寻找在专用数据库中输入数据的最简单方法。长话短说,在
我正在使用 Lumen 和 Fractal 制作 API,但出现错误 Method attempt does not exist 尝试登录时。有人可以帮我解决这个问题吗?这是我的 Controller
我正在查看 Lumen 中的路由,它似乎无法正常工作,我无法确定这是一个问题还是我的理解。 $router->get('{adaptor}[/{id}]', ['uses' => 'MyCon
我是一名优秀的程序员,十分优秀!