一、前言

rabbitMQ是一款开源的高性能消息中间件,常用作消息队列暂存,异步处理,发布/订阅也可以用作RPC调用,下面带大家使用docker搭建,快速方便

二、获取镜像

1、使用docker search rabbitMq命令获取镜像列表

 2、拉取镜像
  • 方式一(指定镜像文件中拉取指定版本):sudo docker pull 镜像地址/rabbitmq:版本-management

docker pull docker.io/rabbitmq:3.8-managemen

3.8版本是STARS数最多的官方镜像。此处需要注意,默认rabbitmq镜像是不带web端管理插件的,所以指定了镜像tag为3.8-management,表示下载包含web管理插件版本镜像,其它Tag版本可以访问DockerHub查询

DockerHub

  • 方式二(默认镜像地址中拉取最新版本)

sudo docker pull rabbitmq:management

3、创建rabbitMq容器

使用sudo docker images查看rabbtiMq镜像ID

 4、运行并挂载到指定目录

sudo docker run -d --name rabbitmq \
-p 5671:5671 -p 5672:5672 -p 4369:4369 \
-p 15671:15671 -p 15672:15672 -p 25672:25672 \
rabbitmq:management

运行并挂载到指定目录,实现RabbitMq自动启动

sudo docker run -d --name rabbitmq --restart=always -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq:management

  • 端口说明

4369:erlang发现端口

5672:amqp客户端端口

15672:http管理界面端口

25672:clustering服务端内部通信端口

执行docker ps可以查看正在运行的容器,我们能看到rabbitMq已经运行

 5、查看容器日志

使用docker logs -f [container/id]命令可以查看容器日志,我们执行docker logs -f 3ae命令查看rabbitMq在启动过程中日志,3ae是容器ID的简写——容器ID太长,使用时其写前几位即可

启动日志

 从日志可以看出,rabbitMq默认创建了guest用户,并且赋予administrator角色权限,同时服务监听5672端口TCP连接和15672端口的HTTP连接,至此说明安装成功。

6、进入容器

docker exec -it 容器名 bash

7、添加用户(默认guest),进入容器后操作

rabbitmqctl add_user [username] [password]

8、授权

rabbitmqctl set_permissions -p / root ".*" ".*" ".*"

9、角色

rabbitmqctl set_user_tags root administrator

10、查看用户

rabbitmqctl list_users

三、访问rabbitMq

1、访问web界面

在浏览器 输入你的主机Ip:15672回车即可访问rabbitMq的Web端管理界面,默认用户名和密码都是guest,如图出现如下界面代表已经成功了。

在这里插入图片描述

 2、新添加一个账户

默认的guest 账户有访问限制,默认只能通过本地网络(如 localhost) 访问,远程网络访问受限,所以在使用时我们一般另外添加用户,例如我们添加一个root用户:

  • 执行docker exec -i -t 3ae bin/bash进入到rabbitMq容器内部
[root@localhost docker]# docker exec -i -t 3a bin/bash
root@3ae75edc48e2:/# 
  • 执行rabbitmqctl add_user root 123456 添加用户,用户名为root,密码为123456
root@3ae75edc48e2:/# rabbitmqctl add_user root 123456 
Adding user "root" ...
  • 执行abbitmqctl set_permissions -p / root ".*" ".*" ".*" 赋予root用户所有权限
root@3ae75edc48e2:/# rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
Setting permissions for user "root" in vhost "/" ...
  • 执行rabbitmqctl set_user_tags root administrator赋予root用户administrator角色
root@3ae75edc48e2:/# rabbitmqctl set_user_tags root administrator
Setting tags for user "root" to [adminstrator] ...
  • 执行rabbitmqctl list_users查看所有用户即可看到root用户已经添加成功
root@3ae75edc48e2:/# rabbitmqctl list_users
Listing users ...
user	tags
guest	[administrator]
root	[administrator]

执行exit命令,从容器内部退出即可。这时我们使用root账户登录web界面也是可以的。到此,rabbitMq的安装就结束了,接下里就实际代码开发。

3、常用发布订阅模式
direct

特点:点对点发送消息

示例:

  • 创建direct交换机Add a new exchange:direct-exchange01

  • 创建队列Add a new queue:queue01,queue02

  • 交换机与队列绑定Bindings

  • 测试Publish message

注意:ACK标识接收并消费消息,NACK则相反,消息仍在队列中

fanout

特点:不论rountkey,所有队列都可接收消息

topic

特点:根据键名匹配所有符合的队列

  • 交换机:topic-exchange01
  • 绑定队列
    • queue01: prekey01.# 前缀为prekey01的所有队列接收消息,#标识匹配一个或多个单词,*标识匹配一个
    • queue02: #.sufkey02后缀为sufkey02的所有队列接收消息
    • queue03: #.sufkey03后缀为sufkey03的所有队列接收消息
  • 测试

只有queue01收到

 只有queue02收到

 queue01,queue03收到

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐