RabbitMQ安装与基本操作

发布时间:2026/9/9 12:18:42

RabbitMQ安装与基本操作 RabbitMQ基本操作: https://blog.csdn.net/Michael_lcf/article/details/124677268RabbitMQ的5大核心概念: https://blog.csdn.net/Michael_lcf/article/details/126435452RabbitMQ的队列模式https://blog.csdn.net/Michael_lcf/article/details/139362674RabbitMQ实现分布式WebSocket通信: https://blog.csdn.net/Michael_lcf/article/details/126403772RabbitMQ基本操作1、windows安装rabbitmq2、linux单节点rabbitmq2.2、rpm安装rabbitmq2.3、安装过程的小插曲2.3.1、Error: unable to perform an operation on node rabbitmichael3、三节点rabbitmq集群3.1、三节点集群安装rabbitmq3.2、配置集群镜像队列策略4、HaproxyKeepalive实现高可用负载均衡4.1、Haproxy Install4.2、Keepalived实现双机(主备)热备为什么要用MQ1.流量消峰。2.应用解耦。3.异步处理。1、windows安装rabbitmq分别安装erlang和rabbitmq下载链接: https://download.csdn.net/download/Michael_lcf/85332315Erlang_otp_win64_22.3.exerabbitmq-server-3.8.3.exe浏览器访问http://127.0.0.1:15672/.guest/guestdockerpull rabbitmq:3.13.7-managementdockerrun-it\--rm\--namerabbitmq\-p5672:5672-p15672:15672\rabbitmq:3.13.7-management-i/--interactive保持标准输入打开即使没有附加终端。-t/--tty分配伪终端‑it经常一起用可以看到容器控制台输出。--rm容器停止后自动删除容器。测试方便重启数据全部丢失。生产禁用。-p 5672:5672端口映射宿主机端口:容器内部端口。5672 是 RabbitMQ AMQP 业务消息端口。-p 15672:15672Web 管理面板端口浏览器访问http://宿主机IP:15672。2、linux单节点rabbitmq2.2、rpm安装rabbitmq链接: https://download.csdn.net/download/Michael_lcf/86262885安装rabbitmqrpm-ivherlang-21.3-1.el7.x86_64.rpm yuminstallsocat-yrpm-ivhrabbitmq-server-3.8.8-1.el7.noarch.rpm启动rabbitmqsystemctlenablerabbitmq-server systemctl start rabbitmq-server systemctl status rabbitmq-server systemctl stop rabbitmq-server开启web管理插件rabbitmq-pluginsenablerabbitmq_management 用默认账号密码(guest/guest)访问地址 http://192.168.168.101:15672/出现权限问题;添加一个新的用户# 创建账号rabbitmqctl add_user admin123 admin123# 设置用户角色rabbitmqctl set_user_tags admin123 administrator# 设置用户权限# set_permissions [-p vhostpath] user conf write readrabbitmqctl set_permissions-p/admin123.*.*.*用户 user_admin123 具有/vhost1 这个 virtualhost中所有资源的配置、写、读权限# 当前用户和角色rabbitmqctl list_users# 创建一个vhostvhost_name就是想要创建的vhostrabbitmqctl add_vhost[vhost_name]rabbitmqctl delete_vhost[vhost_name]rabbitmqctl list_vhosts 用账号密码(admin123/admin123)访问地址 http://192.168.168.101:15672/正常访问;重置命令# 关闭应用的命令rabbitmqctl stop_app# 重置的命令rabbitmqctl reset# 重新启动命令rabbitmqctl start_app# 查看所有队列命令rabbitmqctl list_queues2.3、安装过程的小插曲2.3.1、Error: unable to perform an operation on node ‘rabbitmichael’Error:unable to perform an operation on noderabbitmichael.Please see diagnostics information and suggestions below.Most common reasonsforthisare:*Target node isunreachable(e.g.due to hostname resolution,TCPconnection or firewall issues)*CLItool fails to authenticatewiththeserver(e.g.due toCLItools Erlang cookie not matching thatofthe server)*Target node is not running In addition to the diagnostics info below:*See theCLI,clustering and networking guides on https://rabbitmq.com/documentation.html to learn more*Consult server logs on node rabbitmichael*If target node is configured to use long node names,dont forget to use--longnameswithCLItoolsDIAGNOSTICSattempted to contact:[rabbitmichael]rabbitmichael:*connected toepmd(port4369)on michael*node rabbitmichael up,rabbitapplication running Current node details:*node name:rabbitmqcli-3572-rabbitmichael*effective users home directory:/var/lib/rabbitmq*Erlang cookie hash:mXgluqZ4XzA9DXxrrbEyw在/etc/hosts文件中如下图添加 相关配置3、三节点rabbitmq集群3.1、三节点集群安装rabbitmq前提三节点 均已安装rabbitmq。1.修改3台机器的主机名称在第1台机器执行echonode1/etc/hostname 在第2台机器执行echonode2/etc/hostname 在第3台机器执行echonode3/etc/hostname2.配置各个节点的 hosts 文件让各个节点都能互相识别对方cat/etc/hostsEOF 192.168.168.171 node1 192.168.168.172 node2 192.168.168.173 node3 EOF3.以确保各个节点的cookie文件使用的是同一个值在node1上执行远程操作命令scp/var/lib/rabbitmq/.erlang.cookie rootnode2:/var/lib/rabbitmq/.erlang.cookiescp/var/lib/rabbitmq/.erlang.cookie rootnode3:/var/lib/rabbitmq/.erlang.cookie4.启动RabbitMQ服务,顺带启动Erlang虚拟机和RbbitMQ应用服务在三台节点上分别执行以下命令rabbitmq-server-detached5.在node2执行此处 我们以node1为主然后把node2加入到node1。rabbitmqctl stop_app 只关闭RabbitMQ服务 rabbitmqctl stop 会将Erlang虚拟机关闭rabbitmqctl stop_app 只关闭RabbitMQ服务 rabbitmqctl reset rabbitmqctl join_cluster rabbitnode1 rabbitmqctl start_app 只启动应用服务6.在node3执行此处 我们以node1为主然后把node3加入到node2。把node3加入到node1也可以。rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbitnode2 rabbitmqctl start_app7.集群状态rabbitmqctl cluster_status8.需要重新设置用户创建账号 rabbitmqctl add_user admin123 admin123 设置用户角色 rabbitmqctl set_user_tags admin123 administrator 设置用户权限 rabbitmqctl set_permissions-p/admin123.*.*.*9.解除集群节点(node2和node3机器分别执行)node2和node3机器分别执行 rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app rabbitmqctl cluster_status node1机器上执行 rabbitmqctl forget_cluster_node rabbitnode2 rabbitmqctl forget_cluster_node rabbitnode33.2、配置集群镜像队列策略如果RabbitMQ集群中只有一个Broker节点那么该节点的失效将导致整体服务的临时性不可用并且也可能会导致消息的丢失。可以将所有消息都设置为持久化并且对应队列的durable属性也设置为true但是这样仍然无法避免由于缓存导致的问题因为消息在发送之后和被写入磁盘井执行刷盘动作之间存在一个短暂却会产生问题的时间窗。通过publisherconfirm机制能够确保客户端知道哪些消息己经存入磁盘尽管如此一般不希望遇到因单点故障导致的服务不可用。引入镜像队列(Mirror Queue)的机制可以将队列镜像到集群中的其他Broker节点之上如果集群中的一个节点失效了队列能自动地切换到镜像中的另一个节点上以保证服务的可用性。启动三台集群节点。随便找一个节点添加policy。在node1上创建一个队列发送一条消息队列存在镜像队列。停掉node1之后发现node2成为镜像队列。就算整个集群只剩下一台机器了 依然能消费队列里面的消息说明队列里面的消息被镜像队列传递到相应机器里面了。4、HaproxyKeepalive实现高可用负载均衡HAProxy提供高可用性、负载均衡及基于TCPHTTP应用的代理支持虚拟主机它是免费、快速并且可靠的一种解决方案包括TwitterRedditStackOverflowGitHub在内的多家知名互联网公司在使用。HAProxy实现了一种事件驱动、单一进程模型此模型支持非常大的井发连接数。扩展nginx,lvs,haproxy之间的区别: http://www.ha97.com/5646.html4.1、Haproxy Install1.下载haproxy(在node1和node2)yum-yinstallhaproxy2.修改node1和node2的haproxy.cfgvim/etc/haproxy/haproxy.cfg backend app balance roundrobin server rabbitmq_node1192.168.168.171:5672 check inter5000rise2fall3weight1server rabbitmq_node2192.168.168.172:5672 check inter5000rise2fall3weight1server rabbitmq_node3192.168.168.173:5672 check inter5000rise2fall3weight13.在两台节点启动haproxyhaproxy-f/etc/haproxy/haproxy.cfgps-ef|grephaproxy4.访问地址http://192.168.168.171:8888/stats http://192.168.168.172:8888/stats4.2、Keepalived实现双机(主备)热备试想如果前面配置的HAProxy主机突然宕机或者网卡失效那么虽然RbbitMQ集群没有任何故障但是对于外界的客户端来说所有的连接都会被断开结果将是灾难性的为了确保负载均衡服务的可靠性同样显得十分重要这里就要引入Keepalived它能够通过自身健康检查、资源接管功能做高可用(双机热备)实现故障转移.1.下载keepalivedyum -y install keepalived2.节点node1配置文件vim /etc/keepalived/keepalived.conf把资料里面的keepalived.conf修改之后替换3.节点node2配置文件需要修改global_defs的router_id,如:nodeB其次要修改vrrp_instance_VI中state为BACKUP最后要将priority设置为小于100的值4.添加haproxy_chk.sh(为了防止HAProxy服务挂掉之后Keepalived还在正常工作而没有切换到Backup上所以这里需要编写一个脚本来检测HAProxy 务的状态,当HAProxy服务挂掉之后该脚本会自动重启HAProxy的服务如果不成功则关闭Keepalived服务这样便可以切换到Backup 继续工作)vim /etc/keepalived/haproxy_chk.sh(可以直接上传文件)修改权限chmod 777 /etc/keepalived/haproxy_chk.sh5.启动keepalive命令(node1和node2启动)systemctl start keepalived6.观察Keepalived的日志tail -f /var/log/messages -n 2007.观察最新添加的vipip add show8.node1模拟keepalived关闭状态systemctl stop keepalived9.使用vip地址来访问rabbitmq集群
延伸阅读

更多相关文章

2026/9/9 12:18:42

基于Python的中医藏象辨证量化诊断系统的设计与实现

包含:lunwen开题报告开题答辩PPT毕业答辩PPT项目源码 摘 要 目的:本设计旨在深入研究深度学习、集成学习等机器学习理论,并应用相关算法开展中医藏象辨证量化诊断的创新研究和应用,在设计和实现AdaBoost、随机森林、卷积神经网络和…

2026/9/9 12:18:42

Visual Studio高级保存选项:彻底解决编码乱码与换行符问题

如果你经常用 Visual Studio 写代码,大概率碰到过这种场景:明明是一份正常的 C# 工程,从某个仓库 clone 下来之后,所有中文注释全部变成“锟斤拷”;或者辛辛苦苦在 Windows 上改好的 .py 文件,提交到 Linux…

2026/9/9 12:18:42

浅谈Thumbnails压缩gif图片质量的实现方式

Thumbnails是一个比较大众的图片处理工具,类似的工具还有hutool,可以对图片进行裁剪、缩放、旋转、格式转换、水印等。然而它只提供单张图片的压缩,对于gif的压缩,却是需要我们自己去处理。 下面是一段压缩图片质量的代码&#xf…

2026/9/9 13:19:15

终端AI代理opencode实战指南:开源模型无关,从安装到高效落地

最近AI编程助手这个圈子越来越热闹了。以前大家说的都是Copilot、Cursor这种IDE里的自动补全,现在风向明显变了:终端里的AI代理(agent)成了新宠,能直接接管整个项目,自己读代码、改文件、跑命令。而最近热度…

2026/9/9 13:19:15

Ruffle Flash 播放器完整指南:五分钟唤醒你的 SWF 老回忆

Ruffle Flash 播放器完整指南:五分钟唤醒你的 SWF 老回忆 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle 你玩过的 Flash 老游戏,如今打开 SWF 文件只剩一片空白&am…

2026/9/9 13:19:15

基于MATLAB的BP神经网络股票价格预测系统实战

做股票价格预测这件事,很多人一上来就想着堆模型、上LSTM、搞Transformer,说实话有点本末倒置。我在MATLAB里用反向传播神经网络(BPNN)做了一套完整的价格预测小系统,带GUI界面,代码全部开源可跑&#xff0…

2026/9/9 13:14:14

从收藏到掌握:用技能地图和刻意练习把知识变成能力

去年整理收藏夹和网盘时,我面对过一个尴尬的事实:攒了三百多个教程、买过十几门课,笔记软件里躺着上千条摘抄。但当别人问起“你擅长什么”的时候,我居然答不上来。收藏的东西很多,真正变成 skills 的却很少。这件事促…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/8 7:15:10

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/9 0:00:48

MHS模型硬件标准:让大模型像调用软件一样控制物理设备

让Claude真正看着显微镜说“这个细胞形态不太对”,或者让大模型自己调一版机械臂的运动轨迹,这事儿听上去已经很接近科幻片了。但你真上手试一次就会发现,模型不缺智商,缺的是一个能插进显微镜、机械臂、激光控制器里的“通用插座…

2026/9/9 0:00:48

AI五大核心方向详解:从机器学习到大模型,零基础转行选哪条?

会有人告诉我,他想转行学AI,但打开招聘网站一看直接傻眼:机器学习、深度学习、自然语言处理、计算机视觉、大模型应用……满屏都是这些词,好像每个都会一点,又好像每个都离自己很远。还有人上来就问“学Python还是学Ja…

2026/9/9 0:00:49

从50行最小循环到生产级AI引擎:工程化改造全解析

直接说干货。这一章我写的不是那种"hello world跑通某个模型"的教程,而是把AI引擎当做一个真正要上线、要被人调用、要扛流量的系统来聊。从最初只有50行的最小循环,到能够承载生产流量的AI引擎,中间差的不是代码量,而是…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码