Laravel 队列驱动程序 RabbitMQ


Laravel RabbitMQ 是 Vladimir Yuldashev 的一个软件包,它为 RabbitMQ提供了一个Laravel队列驱动程序。安装和配置后,您就可以使用Laravel的 Queue API了。它甚至可以从v8.0开始为Laravel Horizon提供开箱即用的支持。

接下来就是写作此文时,所有的可用队列配置选项:

'connections' => [
    // ...
    'rabbitmq' => [

        'driver' => 'rabbitmq',

        /*
         * 如果你使用的是 Laravel Horizon,可设置为 "horizon" 
         */
        'worker' => env('RABBITMQ_WORKER', 'default'),

        'dsn' => env('RABBITMQ_DSN', null),

        /*
         * 可以是一个实现了 \Interop\Amqp\AmqpConnectionFactory 接口的一个类 ,例如:
         *  - 如果安装了 enqueue/amqp-ext 则为 \EnqueueAmqpExt\AmqpConnectionFactory 
         *  - 如果安装了 enqueue/amqp-lib 则为 \EnqueueAmqpLib\AmqpConnectionFactory 
         *  - 如果安装了enqueue/amqp-bunny 则为  \EnqueueAmqpBunny\AmqpConnectionFactory 
         */

        'factory_class' => Enqueue\AmqpLib\AmqpConnectionFactory::class,

        'host' => env('RABBITMQ_HOST', '127.0.0.1'),
        'port' => env('RABBITMQ_PORT', 5672),

        'vhost' => env('RABBITMQ_VHOST', '/'),
        'login' => env('RABBITMQ_LOGIN', 'guest'),
        'password' => env('RABBITMQ_PASSWORD', 'guest'),

        'queue' => env('RABBITMQ_QUEUE', 'default'),

        'options' => [

            'exchange' => [

                'name' => env('RABBITMQ_EXCHANGE_NAME'),

                /*
                 * 确定当交换机不存在时下是否创建它。
                 */

                'declare' => env('RABBITMQ_EXCHANGE_DECLARE', true),

                /*
                 * 阅读此文 https://www.rabbitmq.com/tutorials/amqp-concepts.html 获取更多可能值的相关信息
                 */

                'type' => env('RABBITMQ_EXCHANGE_TYPE', \Interop\Amqp\AmqpTopic::TYPE_DIRECT),
                'passive' => env('RABBITMQ_EXCHANGE_PASSIVE', false),
                'durable' => env('RABBITMQ_EXCHANGE_DURABLE', true),
                'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', false),
                'arguments' => env('RABBITMQ_EXCHANGE_ARGUMENTS'),
            ],

            'queue' => [

                /*
                 *  确定当队列不存在时下是否创建它。
                 */

                'declare' => env('RABBITMQ_QUEUE_DECLARE', true),

                /*
                 * 确定是否应将队列绑定到创建的交换机上。
                 */

                'bind' => env('RABBITMQ_QUEUE_DECLARE_BIND', true),

                /*
                 * 阅读此文 https://www.rabbitmq.com/tutorials/amqp-concepts.html 获取更多可能值的相关信息
                 */

                'passive' => env('RABBITMQ_QUEUE_PASSIVE', false),
                'durable' => env('RABBITMQ_QUEUE_DURABLE', true),
                'exclusive' => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
                'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', false),
                'arguments' => env('RABBITMQ_QUEUE_ARGUMENTS'),
            ],
        ],

        /*
         * 确定当与 rabbitmq 通信出错时,应休眠的秒数
         * 如果设置为 false,它将抛出异常而非休眠数秒。
         */

        'sleep_on_error' => env('RABBITMQ_ERROR_SLEEP', 5),

        /*
         * 如果使用SSL连接,则为可选的SSL参数
         * 使用SSL连接还需要配置RabbitMQ以启用SSL。 更多细节见此处:https://www.rabbitmq.com/ssl.html
         */

        'ssl_params' => [
            'ssl_on' => env('RABBITMQ_SSL', false),
            '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),
        ],   

    ],
    // ...    
],

该软件包与 Laravel 和 Lumen兼容。它在底层传输库中也有一定的灵活性 - 您可以使用任何 ampq interop 进行兼容传输。

您可以在 vyuldashev/laravel-queue-rabbitmq上了解有关此软件包的更多信息,获取完整的安装说明以及在GitHub上查看源代码。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-rabbitm...

译文地址:https://learnku.com/laravel/t/33969

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!