千家信息网

laravel如何使用RabbitMQ

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"laravel如何使用RabbitMQ",在日常操作中,相信很多人在laravel如何使用RabbitMQ问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2026年11月03日laravel如何使用RabbitMQ

这篇文章主要介绍"laravel如何使用RabbitMQ",在日常操作中,相信很多人在laravel如何使用RabbitMQ问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"laravel如何使用RabbitMQ"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Homestead(ubuntu) + Laravel 使用RabbitMQ

用法1:单独使用laravel-queue-rabbitmq

laravel安装RabbitMQ:
首先注意自己laravel-queue-rabbitmq支持的laravel版本信息:

Package VersionLaravel VersionBug Fixes Until
96October 5th, 2021Documentation
106, 7October 5th, 2021Documentation
118April 6th, 2021Documentation

执行安装命令:

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),         ],         'queue' => [             'job' => VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Jobs\RabbitMQJob::class,         ],     ],     /*      * Set to "horizon" if you wish to use Laravel Horizon.      */     'worker' => env('RABBITMQ_WORKER', 'default'),  ],  // ...    ],

并且在config/queue.php中修改:

//把sync修改为rabbitmq,同理使用redis驱动则修改为redis'default' => env('QUEUE_CONNECTION', 'sync'),'default' => env('QUEUE_CONNECTION', 'rabbitmq'),//或者修改.env下QUEUE_CONNECTION=rabbitmqQUEUE_CONNECTION=rabbitmq

执行命令生成任务类:

php artisan make:job TestQueue

修改TestQueue.php代码:

data = $data;    }    /**     * Execute the job.     *     * @return void     */    public function handle()    {        //        $data = $this->data;        UserInfo::query()->firstOrCreate(            ["phone" => $data["phone"]],            ["name" => $data["name"]]        );    }}

调用队列函数:

public function test(Request $request){    $data = ["name" => "李大", "phone" => "12345678901"];    $this->dispatch(new TestQueue($data));}

开启队列:

php artisan queue:work

队列消费成功,查看数据库,数据也写入正常。

用法2:使用laravel-queue-rabbitmq+rabbitmq-server

到这里,会有一个问题,既然方法1能够正常使用,为什么还要加入rabbitmq-server,rabbitmq-server又是干啥的?
根据官方描述--RabbitMQ is a feature rich, multi-protocol messaging broker. It supports:

  • AMQP 0-9-1

  • AMQP 1.0

  • MQTT 3.1.1

  • STOMP 1.0 through 1.2

翻译过来就是:RabbitMQ 是一个功能丰富的多协议消息代理。 它支持以下几种协议。

根据RabbitMQ官网的描述:

RabbitMQ runs on many operating systems and cloud environments, and provides a wide range of developer tools for most popular languages.

翻译过来就是:

RabbitMQ 运行在许多操作系统和云环境中,并为大多数流行语言提供了广泛的开发工具。

总结起来就是:方法1使用的是laravel队列的使用方法,比较简单,并没有涉及到太多队列当中概念性的东西(例如生产者和消费者等等),而使用rabbitmq-server,为大家提供了一个服务端,不管是什么语言,使用账号、密码连接到相应的host和port就能使用RabbitMQ。类似的还有EMQX(mqtt服务端)等等。并且rabbitmq-server提供了一个管理后台,可以查看队列的相关情况,便于管理。

启动rabbitmq-server:

sudo service rabbitmq-server start

开启队列:

php artisan queue:work

注意:

在config/queue.php的username和password里不要使用默认的guest账号密码来连接,否则会报错:

The connection timed out after 3 sec while awaiting incoming data

前文已经添加过admin的账号密码,使用这个账号密码还需要给admin账号添加权限:

sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

在rabbitmq-server管理后台查看用户权限:

有权限是Can access virtual hosts显示/,无权限就是显示No Access。

其他用法

1、laravel-queue-rabbitmq+Supervisor守护进程。本质上就是换了个队列驱动,用法和redis无任何差别;

2、可以使用类似这种用法:java操作RabbitMQ,脱离了laravel,使用连接+生产者+消费者的方式;

3、还可以使用更复杂的用法,例如接入其他通信协议(例如MQTT),订阅主题的方式等等。

到此,关于"laravel如何使用RabbitMQ"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

队列 就是 账号 密码 方法 权限 学习 消费 管理 后台 命令 数据 方式 更多 消费者 生产者 语言 问题 帮助 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 伟宏互联网科技 互联网科技工作委员会毛军 新华互联网科技学校 华宇互联网科技 互联网 卓越科技 有马互联网科技 苏州互联网科技贷款公司 互联网科技公司有哪些 武汉健翔互联网络科技有限公司 青岛科技大学互联网大赛研究生 互联网科技与大数据专业 国大互联网教育科技有限公司工作 翼展科技 首家互联网医院 上海科技产业互联网平台 山东星卡互联网科技有限公司官网 互联网公司属于科技吗 互联网科技对化妆品行业 陕西彩京云互联网科技有限公司 黑龙江互联网科技公司 互联网科技公司有哪些 互联网科技公司介绍 移动互联网科技股 互联网行业科技股 元气玛特互联网科技公司是外包吗 富国互联网金融科技混合基金 福州德业互联网科技 陕西九四连强互联网科技有限公司 版纳互联网科技选哪家 科技发展第三阶段互联网时代
0