itsursujit / rabbitmq-queue
Laravel Queue 的 RabbitMQ 驱动。支持 Laravel Horizon。
Requires
- php: ^7.2
- ext-json: *
- bugsnag/bugsnag-laravel: ^2.17
- illuminate/queue: ^6.0
- php-amqplib/php-amqplib: ^2.11
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- laravel/horizon: ^3.0
- mockery/mockery: ^1.0
- orchestra/testbench: ^4.3
- phpunit/phpunit: ^8.4
Suggests
- ext-pcntl: Required to use all features of the queue consumer.
This package is auto-updated.
Last update: 2022-10-09 19:28:56 UTC
README
支持策略
只有最新版本将获得新功能。将通过以下方案提供错误修复:
包版本 | 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);
消费消息
有两种方式消费消息。
-
使用 Laravel 内置的
queue:work
命令。此命令利用basic_get
。 -
使用此包提供的
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] 延迟作业上的致命错误)