MQ消息队列
RabbitMQ | 可用性高(支持主从集群),延迟极低(微妙级) | Erlang |
---|---|---|
ActiveMQ | 协议支持多,可用性一般,吞吐量差,延迟(毫秒级) | java |
RocketMQ | 协议支持少,可用性比较高。 | java |
Kafka | 协议支持较少,可用性高,吞吐量非常高(极限百万)因为吞吐量高相对来说,延迟就会变高 | Scala |
下面以RabbitMQ为例,带大家安装一下:
本次部署全程采用虚拟机Centos7的Docker进行部署
官网链接:RabbitMQ官方网站
单机部署
开始前请先启动你的docker
systemctl start docker
利用docker的pull功能
docker pull rabbitmq:3-mangement
用上面的命令拉去rabbitmq镜像
docker load -i xxx.tar
利用该命令导入下载的镜像:其中-i 值得是input 输入(后面需要加上要导入的资源)
导入成功后,使用下方命令查看镜像是否安装完成
docker images
完成后会看到下方镜像
接下去就可以正式安装MQ了
docker run \
-e RABBITMQ_DEFAULT_USER=(你的用户名) \
-e RABBITMQ_DEFAULT_PASS=(你的密码) \
--name mq \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3-management
这里使用的是docker 的run命令
-e 是environment ,用来配置环境变量
–name 是启动的容器名称
–hostname 是配置主机名(集群部署需要)
-p 是端口映射
-d 在后台运行
安装完成后会出现
这串字符串就是你的容器id
这时候你就可以利用
docker ps | grep rabbit(这里写需要查找的关键字)
出现下面这个就是成功了
之后就可以访问ui页面了
xxx.xxx.xxx.xxx:15672
这里的xxx指的是你的服务器ip,后面的是端口,前面有做端口映射将外部15672端口和容器内15672端口做映射
打开浏览器,访问网址:登录后(账户密码前面安装的时候指定的)可以看到如下界面
其中Overview是总览,Connections是连接,支持后面消费者和发布者连接,Channels是个通道,生产者和消费者会基于Channel完成消息的发送,Exchanges是交换机,Queue是队列消息存储的,Admin是用来管理用户信息的
其中这个地方是用来添加用户的(tag是用户权限(admin,monitoring等))
我添加了一个fems的用户,但是你可以看到实际上它是没有虚拟主机的,这时候可以点击用户名为他分配一个虚拟主机
(一般一个用户都是独享一个虚拟主机的)
为用户添加虚拟主机界面
那如何添加新的虚拟主机呢
在Admin主页中右边的选择框中选择Virtual Hosts
就可以在这里看到你的所有虚拟主机:
下方有一个Add a new virtual host,点击展开
即可添加
集群部署本篇文章不在赘述,如果需要的话,见官网文档。
MQ消息模型分类
基本消息队列:完全基于队列来实现,没有使用交换机
工作消息队列(可以根据交换机类型分为三种)
后面三个(其中的紫色部分是交换机,红色部分为队列)
Docker容器的部署将在下一篇介绍