win下go使用虚拟机docker中RabbitMQ案例

一、查找rabbitmq镜像

docker search rabbitmq

二、拉取rabbitmq镜像

docker pull rabbitmq

三、启动容器

-d 表示后台运行
-p 表示端口映射

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:latest

四、装载可视化插件

docker ps -a # 查看运行的容器
docker exec -it xxxxxxx /bin/bash # 根据容器id进入容器内部
rabbitmq-plugins enable rabbitmq_management # 图形界面rabbitmq管理器插件

五、处理返回状态码500的问题

RabbitMQ Management API returned status code 500

# 需要先进入容器中操作
docker exec -it xxxxxxx /bin/bash # 根据容器id进入容器内部
# 执行下面命令
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf
# 之后需要退出容器,然后重启容器
docker restart 容器id

六、账户修改

1.创建admin账号:
# 需要先进入容器中操作
docker exec -it xxxxxxx /bin/bash # 根据容器id进入容器内部
# 添加账号admin, 密码admin
rabbitmqctl add_user admin admin
# 修改用户角色,将用户设为管理员
rabbitmqctl set_user_tags admin administrator
# 添加资源权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
2.如何修改其他账号:
# 列出所有的用户
rabbitmqctl list_users  
# 修改密码
rabbitmqctl change_password admin  '1234567'
# 删除用户
rabbitmqctl delete_user Username  

七、处理rabbitmq管理页面点击channels弹窗问题

在网页端rabbitmq管理页面点击channels会提示:

Stats in management UI are disabled on this node

解决方案:

# 进入容器
docker exec -it 容器id /bin/bash
# 切换到对应的目录
cd /etc/rabbitmq/conf.d/
# 修改 management_agent.disable_metrics_collector = false
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf
# 退出容器
exit
# 重启容器
docker restart 容器id

最后到页面刷新即可,再次点击后面的菜单也不会有问题了,第一个页面的节点监控也出现了

八、添加Virtual Hosts并添加新账户设置对应Virtual Hosts

1.添加Virtual Hosts:

打开网页端的rabbitmq管理页面,admin账户登录之后点击上面的admin标签页,再点击右侧的Virtual Hosts导航

在下方Add a new virtual host板块

填入Name,然后点击Add virtual host

2.添加账户并设置virtual hosts:

切换到Users标签,左下点击Add a user

输入用户名、密码、Tags选择右侧的Admin

添加完成之后因为没有设置virtual hosts所以会显示No access

点击左侧用户名,进入详情页面设置即可,最后点击Set permission

九、Windows下Go项目连接虚拟机Linux中的rabbitmq所在的docker容器

代码案例见下方GitHub地址

https://github.com/FeifanW/Go-RabbitMQ-demo

1.Simple模式

2.Work模式

一个消息只能被一个消费者获取

3.Publish/Subscribe订阅模式

消息被路由投递到多个队列,一个消息被多个消费者获取

4.Routing路由模式

一个消息被多个消费者获取,并且消息的目标队列可被生产者指定

5.Topic话题模式

一个消息被多个消费者获取,消息的目标queue可用BindingKey以通配符(#:一个或多个词,*:一个词)的方式指定

posted @ 2023-03-19 00:35  喵喵队立大功  阅读(12)  评论(0编辑  收藏  举报