Php 如何超越我自己的拉威尔班?

Php 如何超越我自己的拉威尔班?,php,laravel,laravel-5,Php,Laravel,Laravel 5,因此,我正在使用Laravel5.2,并尝试将SQS转换为我的队列服务 QueueSqs.php的5.2中有一个bug,在这里->在5.6中修复 现在我还不确定我是否可以升级到5.6,因为很多东西都在使用5.2,我不想破坏任何东西 但我确信我可以在5.6版本的代码中使用这个类,并告诉Laravel以某种方式使用它。但是我不知道怎么做。我还没有检查这在Laravel 5或类扩展中是否有效,但在较新版本中,Laravel通常会尝试从其容器解析类,并通过将类的原始FQN绑定到自定义SqsQueue,每

因此,我正在使用Laravel5.2,并尝试将SQS转换为我的队列服务

QueueSqs.php的5.2中有一个bug,在这里->在5.6中修复

现在我还不确定我是否可以升级到5.6,因为很多东西都在使用5.2,我不想破坏任何东西


但我确信我可以在5.6版本的代码中使用这个类,并告诉Laravel以某种方式使用它。但是我不知道怎么做。

我还没有检查这在Laravel 5或类扩展中是否有效,但在较新版本中,Laravel通常会尝试从其容器解析类,并通过将类的原始FQN绑定到自定义SqsQueue,每次使用原始SqsQueue时,它都会返回您的:

class AppServiceProvider extend ServiceProvider
{
    public function register()
    {
        $this->app->bind(\Illuminate\Queue\SqsQueue::class, function ($app) {
            return new CustomSqsQueue();
        });
    }
}

实际上,除了重写原始类并重新绑定它以供Laravel使用之外,您还可以添加自己的自定义队列连接器,并使用该连接器而不是Laravels本机SQS队列连接器:

要添加队列要使用的新连接器,请打开服务提供商并将以下代码添加到
引导

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中工作