消息中间件RabbitMQ安装和架构
RabbitMQ安装
RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。
RabbitMQ官方地址:http://www.rabbitmq.com/
目标:按照文档在本机安装windows版本RabbitMQ,并配置其用户和Virtual Hosts
3.1. 安装说明
详细查看 资料/安装Windows RabbitMQ.pdf 文档。
3.2. 用户以及Virtual Hosts配置
3.2.1. 用户角色
角色说明: 1、 超级管理员(administrator) 可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。 2、 监控者(monitoring) 可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等) 3、 策略制定者(policymaker) 可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。 4、 普通管理者(management) 仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。 5、 其他 无法登陆管理控制台,通常就是普通的生产者和消费者。
RabbitMQ在安装好后,可以访问http://localhost:15672 ;其自带了guest/guest的用户名和密码;
如果需要创建自定义用户;那么也可以登录管理界面后,如下操作:
3.2.2. Virtual Hosts配置
像mysql拥有数据库的概念并且可以指定用户对库和表等操作的权限。RabbitMQ也有类似的权限管理;在RabbitMQ中可以虚拟消息服务器Virtual Host,每个Virtual Host相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 相当于mysql的db之间。Virtual Name一般以/开头。
-
创建Virtual Hosts
-
设置Virtual Hosts权限
分析:
-
安装erlang;
-
安装rabbitMQ;
以服务方式启动(安装完之后在任务管理器中服务一栏能看到RabbtiMq)
rabbitmq-service install 安装服务
rabbitmq-service start 开始服务
Rabbitmq-service stop 停止服务
Rabbitmq-service enable 使服务有效
Rabbitmq-service disable 使服务无效
rabbitmq-service help 帮助
当rabbitmq-service install之后默认服务是enable的,如果这时设置服务为disable的话,rabbitmq-service start就会报错。
-
安装RabbitMQ的图形管理界面插件;
rabbitmq-plugins.bat enable rabbitmq_management
-
创建管理用户;
-
创建虚拟主机Virtual Hosts
小结:
安装erlang安装RabbitMQ安装管理插件创建用户创建虚拟主机安装上述的组件时候都需要使用以管理员身份运行。
四、RabbitMQ架构
RabbitMQ提供了6种模式:
简单模式,work-queue工作队列模式,Publish/Subscribe发布与订阅模式,Routing路由模式,Topics主题模式,RPC远程调用模式(远程调用,不太算MQ;不作介绍);
官网对应模式介绍:https://www.rabbitmq.com/getstarted.html
官网文档:https://www.rabbitmq.com/getstarted.html
4.1 官方的简单架构图
Publisher - 生产者:发布消息到RabbitMQ中的Exchange
Consumer - 消费者:监听RabbitMQ中的Queue中的消息
Exchange - 交换机:和生产者建立连接并接收生产者的消息
Queue - 队列:Exchange会将消息分发到指定的Queue,Queue和消费者进行交互
简单架构图 |
---|
|
4.2 RabbitMQ的完整架构图
完整架构图
完整架构图 |
---|
|
关键注意事项
- 版本兼容性:严格匹配 Erlang 与 RabbitMQ 版本,避免启动失败;
- 端口开放:生产环境需开放 5672(AMQP)、15672(Web 管理)、25672(集群通信)端口(Linux 用
firewall-cmd
开放,Windows 用防火墙设置); - 持久化配置:若需消息不丢失,需开启 “交换机持久化 + 队列持久化 + 消息持久化”;
- 集群配置:集群节点间需保证网络互通,镜像队列需合理设置同步策略(如同步到所有节点或指定节点);
- 性能优化:高并发场景可调整
vm_memory_high_watermark
(内存阈值)、disk_free_limit
(磁盘空间阈值),避免因资源不足导致服务降级。
- 点赞
- 收藏
- 关注作者
评论(0)