denismitr/lara-rabbit

Laravel RabbitMQ 队列驱动

v0.0.2 2019-12-22 14:23 UTC

This package is auto-updated.

Last update: 2024-09-11 19:09:53 UTC


README

https://github.com/vyuldashev/laravel-queue-rabbitmq 分支

安装

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

composer require denismitr/lara-rabbit

该包将自动注册自身。

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),
           ],

           'exchange' => env('RABBITMQ_EXCHANGE', 'lara_rabbit_exchange'),
       ],        
    ],

    // ...    
],

Laravel 使用

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

Laravel Horizon 使用

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

Lumen 使用

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

$app->register(Denismitr\LaraRabbit\LaraRabbitServiceProvider::class);

消费消息

有两种方法可以消费消息。

  1. queue:work 命令是 Laravel 的内置命令。此命令利用 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