- rabbitmq 简介
- ubuntu 安装rabbitmq
- 一些配置及常用命令
简介
消息队列一般用于系统间对接,能够降低系统耦合度。通过将消息的发送和接收分离来实现应用程序的异步和解耦。你可以使用消息队列实现:
- 数据分发
- 非阻塞操作或推送通知(如邮件、短信提醒等)
- 实现发布/订阅,异步处理
- 工作队列
RabbitMq作为一款消息队列产品,它由Erlang语言开发,实现AMQP(高级消息队列协议)的开源消息中间件。
应用场景
异步处理
场景说明:用户注册后,注册信息写入数据库,再发邮件、短信通知。但后两项并非必须,传统做法:数据写入->发送短信->发送邮件->返回给用户。用户等待所有任务完成。
引入rabbitmq:可以将短信通知、邮件通知这两个非必要的任务写入到消息队列,再由专门的任务处理程序去读取消息发送通知。用户等待时间变成写入数据库时间+写入消息队列时间。应用解耦
网上购物,用户提交订单后,订单系统需要通知库存系统。传统做法,订单系统直接调用库存系统api。当库存系统出现故障,则订单失效。
一如rabbitmq:订单系统完成持久化,将消息写入消息队列。库存系统订阅消息队列中的订单,库存系统故障了,也不会导致订单丢失。恢复后可以从消息队列继读取订单处理。流量削峰
前端加入消息队列。大批量用户请求到达后,写入消息队列,并设置最大阈值。超过该阈值的请求丢弃返回错误给客户端。系统只需要从消息队列中取正常的请求来进行处理即可。
安装
安装环境:Ubuntu 20.04,使用如下命令安装。
1 | sudo apt install rabbitmq-server |
1 | systemctl status rabbitmq-server #检查状态 |
下面是启动后,查看状态的输出。
1 | ● rabbitmq-server.service - RabbitMQ Messaging Server |
下面是一些常用管理命令,包括启用、停用、重启。
1 | sudo service rabbitmq-server start #启用 |
停用后,再次查看状态,输出如下。重点查看Active后面的内容,此时为inactive(dead).
1 | ● rabbitmq-server.service - RabbitMQ Messaging Server |
开启Web管理
1 | sudo rabbitmq-plugins enable rabbitmq_management |
注意,执行上面的命令时,要确保rabbitmq在运行状态中。
执行完后,在浏览器中输入http://localhost:15672
并使用guest/guest 作为用户名密码登录。
用户管理命令
1 | sudo rabbitmqctl list_users #列出用户 |
给用户配置VirtualHost中的读写权限。使用set_permissions命令来将rabbitadmin这个用户赋予/
这个虚拟主机的读、写、配置权限。rabbitmq安装好后,会默认有这个/
虚拟主机的。通过Web管理端可以看见,guest用户对其有所有权限。通过下面命令,将我们刚才创建的rabbitadmin也赋权过去。
1 | sudo rabbitmqctl set_permissions -p / rabbitadmin '.*' '.*' '.*' |
参考
- 本文作者: 达文西
- 本文链接: https://edsiongithub.github.io/2021/12/21/26/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!