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地址
1.Simple模式
2.Work模式
一个消息只能被一个消费者获取
3.Publish/Subscribe订阅模式
消息被路由投递到多个队列,一个消息被多个消费者获取
4.Routing路由模式
一个消息被多个消费者获取,并且消息的目标队列可被生产者指定
5.Topic话题模式
一个消息被多个消费者获取,消息的目标queue可用BindingKey以通配符(#:一个或多个词,*:一个词)的方式指定
本文作者:oaoa
本文链接:https://www.cnblogs.com/oaoa/p/17232301.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步