RabbitMQ
消息中间件
特性简介
- 异步消息传递 Asynchronous Messaging
- 分布式部署 Distributed Deployment
架构原理
使用场景
下载安装
RabbitMQ Docker
Docker Official Images:https://registry.hub.docker.com/_/rabbitmq/
# 文档
Doc guides: https://rabbitmq.com/documentation.html
Support: https://rabbitmq.com/contact.html
Tutorials: https://rabbitmq.com/getstarted.html
Monitoring: https://rabbitmq.com/monitoring.html
# 搜索、下拉
docker search rabbitmq
docker pull rabbitmq
说明:
rabbitmq:management,带management,即web可视化界面
# 查看镜像
docker images
# 后台运行镜像,实例化容器
常用0:
docker run -d -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --name rabbit-server --hostname rabbit-host rabbitmq:management
示例1:
docker run -d -it --rm --name some-rabbit --hostname my-rabbit rabbitmq:management
示例2:
docker run -d --name rabbitmq -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 15691:15691 -p 15692:15692 -p 25672:25672 rabbitmq:management
选项说明:
-d 后台启动
-p 端口映射,<外部端口>:<容器内部端口>
-it i保持STDIN打开;t分配虚拟TTY
--rm 当容器退出时自动删除它,一般不常用
--name 容器名,给容器ID起个别名,不指定默认为容器ID
--hostname 容器主机名,域名
端口说明:
4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 15691-15692/tcp, 25672/tcp
15672 (if management plugin is enabled);web管理端口15672
15671 management监听端口
5672, 5671 (AMQP 0-9-1 without and with TLS);服务端口5672
4369 (epmd) epmd 代表 Erlang 端口映射守护进程
25672 (Erlang distribution)
# 查看容器
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器ID 镜像 命令 创建时间 状态 端口 容器别名
# 进入容器虚拟终端(TTY)
docker exec -it <container name> bash
$ docker exec -it rabbit-server sh # 同dash
$ docker exec -it rabbit-server bash # 同rbash
# 查看容器内部IP
docker exec -it rabbit-server ls
docker exec -it rabbit-server cat /etc/hosts
热身0
docker搭建RabbitMQ:https://www.cnblogs.com/huarui/p/12773521.html
docker安装rabbitmq:https://blog.youkuaiyun.com/qq_42651904/article/details/102788538
Docker 安装rabbitMQ:http://www.mamicode.com/info-detail-2562820.html
示例1
参考文档:docker安装RabbitMQ
step1
# 拉取、查看镜像
docker pull rabbitmq:management
docker images | grep rabbitmq*
# 说明:
带有“mangement”的版本(包含web管理页面);
step2
# 创建和启动容器
# 方法1
docker run -d -p 5672:5672 -p 15672:15672 --name some-rabbit rabbitmq:management
# 方法2
docker run -d -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --name rabbit-server --hostname rabbit-host rabbitmq:management
# -e RABBITMQ_DEFAULT_VHOST=vhost
# -e RABBITMQ_DEFAULT_USER=guest
# -e RABBITMQ_DEFAULT_PASS=guest guest
# 说明:
-d 后台运行容器;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;<虚机路径>:<容器路径>
--name 指定容器名;
-h,--hostname 容器主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
# 查看正在运行容器
docker ps
step3
# 访问rabbitmq管理控制台
http://localhost:15672 或 http://Server-IP:15672
http://172.17.0.1:15672 # docker网址
http://192.168.31.206:15672 # 虚机网址
# 提示:
默认用户名密码:guest/guest
# 停止rabbit
docker stop <NAMES>
docker stop <CONTAINER ID>
# 启动rabbit
docker stop <NAMES>
docker start <CONTAINER ID>
# 开发rabbitMQ端口
firewall-cmd --zone=public --add-port=15672/tcp --permanentfirewall-cmd --zone=public
示例2
# 搜索、拉取
docker search rabbitmq:management
docker pull rabbitmq:management
说明:
management,表明是带web管理界面的,便于管理。
# 运行
# 未映射端口
docker run -d --hostname rabbit-host --name rabbit-service rabbitmq:management
# 需要映射端口
docker run -d --hostname rabbit-host -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 --name rabbit-service rabbitmq:management
# 查看容器
docker ps
# 查看日志
docker logs <CONTAINER ID>
输出:
node : rabbit@my-rabbit
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.conf
cookie hash : dqCUuiAJlMrxpqgh1GHL/g==
log(s) : <stdout>
database dir : /var/lib/rabbitmq/mnesia/rabbit@my-rabbit
# 浏览器访问服务器地址
访问:http://server-ip:15672
默认的端口为:5672,web管理的端口为:15672,默认用户和密码为:guest
示例3
# search\pull
docker search rabbitmq:management
docker pull rabbitmq:management
# run
docker run -d -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15674:15674 --name some-rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:management
解释:启动容器,映射端口,设置默认用户密码
# 1.创建Dockerfile,开启rabbitmq插件,编辑 vim Dockerfile 添加如下内容,保存退出
FROM rabbitmq:management
# MAINTAINER zhuoyi
RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp
# 2.通过Dockerfile生成镜像,注:这一步必须在启动容器之后执行
docker build -f Dockerfile -t rabbitmq:management .