持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
1 Docker安装RabbitMQ
1.1 新建docker-compose.yml文件
在/usr/local/docker目录下新建docker-compose.yml文件
docker-compose.yml文件
version: "3.1"
services:
rabbitmq:
image: daocloud.io/library/rabbitmq:3.8.5
container_name: rabbitmq
restart: always
volumes:
- ./data/:/var/lib/rabbitmq/
ports:
- 5672:5672
- 15672:15672
1.2 执行docker-compose up -d命令
需要提前安装好docker和docker-compose命令
[root@VM-0-9-centos docker]# docker-compose up -d
Creating network "docker_default" with the default driver
Pulling rabbitmq (daocloud.io/library/rabbitmq:3.8.5)...
Trying to pull repository daocloud.io/library/rabbitmq ...
3.8.5: Pulling from daocloud.io/library/rabbitmq
7595c8c21622: Pull complete
d13af8ca898f: Pull complete
70799171ddba: Pull complete
b6c12202c5ef: Pull complete
7c7d7bd9523c: Pull complete
30fd97770142: Pull complete
2e22a196dea1: Pull complete
e0010ee8d8de: Pull complete
3d2d7e903ce4: Pull complete
ac9f214f88d4: Pull complete
Digest: sha256:ffd879024b985f742de389b1d9572fb048d1f09da4bb050dc81069c57329baef
Status: Downloaded newer image for daocloud.io/library/rabbitmq:3.8.5
Creating rabbitmq ... done
1.3 测试
在Linux内部执行:curl localhost:5672
得到返回AMQP则说明安装成功。
[root@VM-0-9-centos docker]# curl localhost:5672
AMQP
2 启动图形化界面
2.1 进入到容器内部
docker exec -it rabbitmq bash
2.2 进入opt/rabbitmq目录
cd opt/rabbitmq
这里比较核心的目录是plugins和sbin目录
- plugins目录里是RabbitMQ自带的一些插件
- sbin里则是一些可执行程序
2.3 进入sbin目录
cd sbin
执行
./rabbitmq-plugins enable rabbitmq_management
root@e844946af0e1:/opt/rabbitmq/sbin# ./rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@e844946af0e1:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@e844946af0e1...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
2.4 windows浏览器访问15672端口
http://139.155.78.16:15672/
用户名和密码默认均为guest
3 RabbitMQ架构
一个RabbitMQ服务中可以有多个Virtual Host,Virtual Host中有Exchange--交换机和Queue--队列。
当一个生产者Publisher想要在RabbitMQ上存放消息的时候首先与RabbitMQ中的某个Virtual Host建立连接,然后通过Channel将数据发送给对应的Exchange,然后,Exchange通过指定的routes规则将消息存放在对应的Queue上。
当消费者想来读取消息的时候,也必须与同一个Vitual Host建立连接。然后通过Channel从对应的Queue读取数据。
注意:
Virtual Host可以有多个,默认的为“/”Channel都是基于Connection建立的- 若是期待两个服务通过RabbitMQ通讯,则需要操作同一个
Vitual Host