iamfarhad/laravel-rabbitmq

最好的Laravel RabbitMQ包

v0.0.14 2023-11-08 08:55 UTC

This package is auto-updated.

Last update: 2024-09-12 09:49:07 UTC


README

Latest Stable Version Total Downloads License Tests Code style

连接抽象了套接字连接,并为我们处理协议版本协商、认证等工作。在这里我们连接到本地机器上的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);

消费消息

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

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

  2. 使用此包提供的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;
    }
}

队列和交换机将自动创建