iamfarhad / laravel-rabbitmq
最好的Laravel RabbitMQ包
v0.0.14
2023-11-08 08:55 UTC
Requires
- php: ^8.1
- ext-pcntl: *
- illuminate/queue: ^9.0|^10.0
- illuminate/support: ^9.18|^10.0
- php-amqplib/php-amqplib: ^3.6.0
Requires (Dev)
- ext-json: *
- dg/bypass-finals: dev-master
- mockery/mockery: ^1.7.0
- orchestra/testbench: ^v7.18.0
- phpunit/phpunit: ^9.6|^10.0.7
- rector/rector: ^0.15.25
- squizlabs/php_codesniffer: ^3
README
连接抽象了套接字连接,并为我们处理协议版本协商、认证等工作。在这里我们连接到本地机器上的RabbitMQ节点,因此使用localhost。如果我们想要连接到另一台机器上的节点或PHP客户端推荐的代理主机,我们只需在此处指定其主机名或IP地址。
支持政策
只有最新版本将获得新功能。通过以下方案提供错误修复:
这是该包的实验性版本
安装
您可以使用以下命令通过composer安装此包
composer require iamfarhad/laravel-rabbitmq
包将自动注册自身。
在config/queue.php中添加连接
'connections' => [ // ..... 'rabbitmq' => [ 'driver' => 'rabbitmq', 'queue' => env('RABBITMQ_QUEUE', 'default'), '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', '/'), 'lazy' => env('RABBITMQ_LAZY_CONNECTION', true), 'keepalive' => env('RABBITMQ_KEEPALIVE_CONNECTION', false), 'heartbeat' => env('RABBITMQ_HEARTBEAT_CONNECTION', 0), ], '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), ], 'queue' => [ 'job' => \iamfarhad\LaravelRabbitMQ\Jobs\RabbitMQJob::class, ], ], ] ]
Laravel使用
完成配置后,您可以使用Laravel Queue API。如果您使用了其他队列驱动程序,则无需更改其他内容。如果您不知道如何使用队列API,请参阅官方Laravel文档:https://laravel.net.cn/docs/queues
Lumen使用
对于Lumen的使用,应该在bootstrap/app.php
中手动注册服务提供程序,如下所示:
$app->register(iamfarhad\LaravelRabbitMQ\LaravelRabbitQueueServiceProvider::class);
消费消息
有两种方式可以消费消息。
-
使用Laravel内置的
queue:work
命令。该命令利用basic_get
。 -
使用此包提供的
rabbitmq:consume
命令。该命令利用basic_consume
,比basic_get
的性能高约3倍。
php artisan rabbitmq:consume --queue=customQueue
您可以使用以下方式创建带有自定义队列的工作
class TestJob implements ShouldQueue { use Dispatchable; use InteractsWithQueue; use Queueable; use SerializesModels; public function __construct() { $this->onQueue('customQueue'); } public function handle() { return true; } }
队列和交换机将自动创建