php - 如何使用我自己的 Laravel 课程?
问题描述
因此,我正在使用 Laravel 5.2,并尝试将 SQS 作为我的队列服务。
QueueSqs.php 中的 5.2 中有一个错误,已在此处修复 -> https://github.com/illuminate/queue/blob/5.6/SqsQueue.php在 5.6
现在我不确定我是否可以升级到 5.6,因为很多东西都在使用 5.2,我不想破坏任何东西。
但我确信我可以在 5.6 的代码中以某种方式使用这个类,并告诉 Laravel 以某种方式使用它。但我不知道该怎么做。
解决方案
我没有检查这是否在 Laravel 5 或类扩展中有效,但在较新的版本中,Laravel 通常会尝试从其容器中解析类,并将类的原始 FQNS 绑定到您的自定义 SqsQueue,而是返回您的每次使用原件时:
class AppServiceProvider extend ServiceProvider
{
public function register()
{
$this->app->bind(\Illuminate\Queue\SqsQueue::class, function ($app) {
return new CustomSqsQueue();
});
}
}
好吧,实际上,除了覆盖原始类并重新绑定它以供 Laravel 使用之外,您还可以添加自己的自定义队列连接器并使用它来代替 Laravel 原生 SQS 队列连接器:
要添加新的连接器供队列使用,请打开服务提供者并将以下代码添加到boot
public function register()
{
$manager = $this->app['queue'];
$manager->addConnector('sqs-custom', function() {
return new CustomSqsQueue;
});
}
然后,在 queue.php 配置中,基于原始 SQS 连接添加一个新连接,但使用您在第一个参数或addConnector
服务提供者中选择的驱动程序名称。数组的键是用于定义队列的连接名称:
'sqs-custom' => [
'driver' => 'sqs-custom',
'key' => 'your-public-key',
'secret' => 'your-secret-key',
'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id',
'queue' => 'your-queue-name',
'region' => 'us-east-1',
],
同样,这是未经测试的,但应该能够在 Laravel 5.2 中工作。
推荐阅读
- azure - Azure API 管理 JWT 验证失败
- c# - Show multiple table data in View ASP.NET
- mysql - 站点定期出现错误“Mysql 连接错误 [localhost]:(2002)连接被拒绝(400)”
- ios - iOS:在没有情节提要的情况下以编程方式为阿拉伯语和希伯来语类语言翻转整个应用程序 UI
- python-2.7 - 如何存储 Selenium WebDriver 中存在的 webdriverObject.get_attribute("srcset") 的返回值?
- python - 从 sqlalchemy 模型中获取 SQL 数据类型
- c# - DropDownListFor 没有自动选择属性
- html - 角弹性布局之争
- python - 如何在python中用NaN替换空系列值
- mapbox-gl-js - 多层的 Mapbox GL JS 性能