itsursujit/rabbitmq-queue

Laravel Queue 的 RabbitMQ 驱动。支持 Laravel Horizon。

dev-master / 10.0.x-dev 2020-03-09 12:56 UTC

This package is auto-updated.

Last update: 2022-10-09 19:28:56 UTC


README

Latest Stable Version Build Status Total Downloads StyleCI License

支持策略

只有最新版本将获得新功能。将通过以下方案提供错误修复:

包版本 Laravel 版本 错误修复截止日期
6.0 5.5 2019年8月30日 文档
7.0 5.6 2018年8月7日 文档
7.1 5.7 2019年3月4日 文档
7.2 5.8 2019年8月26日 文档
8.0 5.8 2019年8月26日 文档
9 6 2021年9月3日 文档
10 6 2021年9月3日 文档

安装

您可以通过 composer 使用以下命令安装此包

composer require vladimir-yuldashev/laravel-queue-rabbitmq

该包将自动注册自身。

将连接添加到 config/queue.php

'connections' => [
    // ...

    'rabbitmq' => [
    
       'driver' => 'rabbitmq',
       'queue' => env('RABBITMQ_QUEUE', 'default'),
       'connection' => PhpAmqpLib\Connection\AMQPLazyConnection::class,
   
       'hosts' => [
           [
               'host' => env('RABBITMQ_HOST', '127.0.0.1'),
               'port' => env('RABBITMQ_PORT', 5672),
               'user' => env('RABBITMQ_USER', 'guest'),
               'password' => env('RABBITMQ_PASSWORD', 'guest'),
               'vhost' => env('RABBITMQ_VHOST', '/'),
           ],
       ],
   
       'options' => [
           'ssl_options' => [
               'cafile' => env('RABBITMQ_SSL_CAFILE', null),
               'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
               'local_key' => env('RABBITMQ_SSL_LOCALKEY', null),
               'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
               'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
           ],
       ],
   
       /*
        * Set to "horizon" if you wish to use Laravel Horizon.
        */
       'worker' => env('RABBITMQ_WORKER', 'default'),
        
    ],

    // ...    
],

Laravel 使用

完成配置后,您可以使用 Laravel Queue API。如果您已使用其他队列驱动程序,则不需要更改其他任何内容。如果您不知道如何使用 Queue API,请参阅官方 Laravel 文档:https://laravel.net.cn/docs/queues

Laravel Horizon 使用

从 8.0 版本开始,此包默认支持 Laravel Horizon。首先安装 Horizon,然后将 RABBITMQ_WORKER 设置为 horizon

Lumen 使用

对于 Lumen 使用,应在 bootstrap/app.php 中手动注册服务提供者,如下所示

$app->register(VladimirYuldashev\LaravelQueueRabbitMQ\LaravelQueueRabbitMQServiceProvider::class);

消费消息

有两种方式消费消息。

  1. 使用 Laravel 内置的 queue:work 命令。此命令利用 basic_get

  2. 使用此包提供的 rabbitmq:consume 命令。此命令使用 basic_consume,比 basic_get 性能高约 2 倍。

测试

使用 docker-compose 设置 RabbitMQ

docker-compose up -d rabbitmq

要运行测试套件,可以使用以下命令

# To run both style and unit tests.
composer test

# To run only style tests.
composer test:style

# To run only unit tests.
composer test:unit

如果您从样式测试中收到任何错误,可以使用以下命令自动修复大多数,如果不是所有的问题

composer fix:style

贡献

您可以通过发现错误并创建问题来为此包做出贡献。请指定您创建的拉取请求或问题的包版本。(例如:[5.2] 延迟作业上的致命错误)