携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
一、什么是RabbitMQ消息队列和核⼼概念介
绍
1)RabbitMQ消息队列简单介绍
- 是⼀个开源的AMQP实现,服务器端⽤Erlang语⾔编 写,⽀持多种客户端,如:Python、Ruby、.NET、 Java、C、⽤于在分布式系统中存储转发消息,在易⽤ 性、扩展性、⾼可⽤性等⽅⾯表现不错,与SpringAMQP完美的整合、API丰富易⽤
- ⽂档:www.rabbitmq.com/getstarted.…
2)核⼼概念
了解了这些概念,是使⽤好RabbitMQ的基础
0. Producer/消息生产者
0. 创建消息Message,然后发布给RabbitMQ服务端
0. Message/消息
0. 生产者生产出来,消费者消费的对象,有消息头和消息体,包含多个属性配置,比如routingkey
0. RoutingKey/路由键
0. 生产者将消息发送给交换器时,一般会指定一个RountingKey,用来指定这个消息的路由规则
0. 最常长度255字节
0. Connection/连接
0. 是RabbitMQ的socket/套接字链接,它封装了socket协议相关部分逻辑
0. 一个连接上可以有多个channel进行通信
0. Channel/信道
0. 一条支持多路复用的通道,独立的双向数据流通道,可以进行发布、订阅、接收消息
0. 信道是建立在真是的TCP连接内的虚拟连接,复用TCP连接的通道
0. Broker/服务端
0. RabbitMQ的服务端程序,可以认为一个MQ节点就是一个Broker
0. Exchange/交换机
0. 生产者将消息发送到Exchange,Exchange将消息再路由到一个或者多个队列中
0. 交换机有多个类型
0. 队列和交换机是多对多的关系
0. Binding/绑定
0. 通过绑定将交换机和队列关联起来,在绑定的时候一般会指定一个绑定key,这样RabbitMQ就知道如何正确地将消息路由到对应的队列
0. 生产者将消息发送给交换器时,会指定一个RoutingKey,当BindKey和RountingKey相匹配时,消息就会被路由到对应的队列中。
0. Queue/队列
0. 是RabbitMQ的内部对象,用于存储消息,在RabbitMQ中,消息对象只能存储到队列中
0. Virtual host/虚拟主机
-
用于把不同业务模块进行逻辑隔离,一个Virtual host里可以有若干个Exchange和Queue,同一个Virtual host里面不能有相同名字的Exchange或Queue
-
Virtual host默认是
/,可以自己增加,比如说/dev、/test、/pro等 -
Consummer/消费者
-
消费Queue中的消息
二、安装Linux环境的RabbitMQ的方式
1)源码安装(不推荐)
- 依赖多、且版本和维护相对复杂
- 需要erlang环境、版本也是有要求
2)docker镜像安装(推荐)
- 不⽤安装其他相关依赖,容器化部署是趋势
- ⽅便管理维护,企业多采⽤这个⽅式
- Linux服务器准备:CentOS7.x以上即可
三、Docker安装RabbitMQ
1)安装Docker
- 连接上服务器(Centos7以上)
- 依次运⾏以下命令添加yum源
yum update
yum install epel-release -y
yum clean all
yum list
- 安装并运行Docker服务
yum install docker-io -y
systemctl start docker
- 检查安装结果
docker info
- 启动并使用Docker
systemctl start docker #运⾏Docker守护进程
systemctl stop docker #停⽌Docker守护进程
systemctl restart docker #重启Docker守护进程
- 更多文档:help.aliyun.com/document_de… ####
2)安装RabbitMQ
- 拉取镜像
#拉取镜像
docker pull rabbitmq:management
docker run -d --hostname rabbit_host1 --name xd_rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management
-
参数解释
-
-d 以守护进程⽅式在后台运⾏
-
--hostname:设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts,作为容器主机IP的别 名,并且将显示在容器的bash中
-
--name:指定容器名
-
-e 参数
- RABBITMQ_DEFAULT_USER ⽤户名
- RABBITMQ_DEFAULT_PASS 密码
-
-p 15672:15672 management 界⾯管理访问端⼝
-
-p 5672:5672 amqp 访问端⼝
-
-
主要端口介绍
- 4369 erlang 发现⼝
- 5672 client 端通信⼝(需映射)
- 15672 管理界⾯ ui 端⼝(需映射)
- 25672 server 间内部通信⼝
-
安装启动完毕后,访问web管理界面
-
注意事项
- Linux服务器检查防⽕墙是否关闭
- 云服务器检查⽹络安全组是否开放端⼝
# CentOS 7 以上默认使⽤的是firewall作为防⽕墙
# 查看防⽕墙状态
firewall-cmd --state
# 停⽌firewall
systemctl stop firewalld.service
# 禁⽌firewall开机启动
systemctl disable firewalld.service
四、管控台介绍
1)登录
账号/密码默认是:guest/guest;上文的启动命令中更改了账号密码:admin/password ####