Windows 10下安装RabbitMQ需先装Erlang 25.x并设ERLANG_HOME与PATH,再装RabbitMQ 3.12.x至纯英文路径,启用rabbitmq_management插件,创建专用用户并授权,最后通过SpringBoot配置手动ACK与prefetch实现削峰填谷。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Windows 10环境下搭建RabbitMQ实现异步任务削峰填谷,需绕过中文路径陷阱、规避Erlang版本不兼容、确保服务能随系统启动且被SpringBoot稳定连接,否则生产者发不出消息、消费者收不到队列、流量洪峰来时系统直接雪崩。
安装前强制校验环境
打开CMD,逐行执行以下命令,任一失败即中止安装:
echo %ERLANG_HOME% → 若无输出,说明Erlang未设环境变量;
erl -version → 若报“不是内部或外部命令”,说明PATH未包含Erlang bin目录;
sc query rabbitmq → 若提示“找不到服务”,说明RabbitMQ未注册为Windows服务。
这三步必须全部通过,【否则后续所有配置均无效】。Windows服务依赖Erlang运行时,路径含中文会导致rabbitmq-service.bat静默退出,连日志都不写。
安装Erlang与RabbitMQ双组件
方法一:离线免依赖安装(推荐)
① 下载otp_win64_25.3.exe(非26.x,因RabbitMQ 3.12.x仅兼容Erlang 25.x);
② 右键→以管理员身份运行→自定义安装路径为C:\erl25;
③ 安装完成立即设置系统环境变量:ERLANG_HOME = C:\erl25,PATH追加%ERLANG_HOME%\bin;
④ 下载rabbitmq-server-3.12.19.exe,同样以管理员身份运行,安装路径必须为纯英文(如C:\rabbitmq),【禁止选默认的Program Files路径】;
⑤ 安装完毕后,不要点“Start Service”,先打开CMD执行:cd C:\rabbitmq\sbin → rabbitmq-plugins enable rabbitmq_management。
方法二:Chocolatey一键安装(需已配置代理)
choco install erlang --version=25.3.2.7 → choco install rabbitmq --version=3.12.19 → 自动处理PATH与服务注册。
启用管理界面并创建专用用户
启动RabbitMQ服务:在CMD中执行 net start rabbitmq;
等待10秒后,浏览器访问 http://localhost:15672;
用默认账号 guest/guest 登录 → 点击右上角 Admin → Add user;
输入用户名 codex_user,密码 codex_pass,Tags 勾选 administrator;
点击 Add user 后,立刻切换到 Virtual Hosts 标签页 → 点击 / → Permissions → 在 codex_user 行勾选 Configure、Write、Read 全部三项。
这一步不能跳过。guest账户默认禁用远程登录,SpringBoot应用若部署在另一台机器上将无法连通。
通过 Codex CLI 生成图片,支持尺寸控制和批量模式。依赖:codex (npm)。代理默认启用。用 generate.sh 生成单张,batch_generate.sh 批量生成游戏 UI 素材,gen_size.sh 指定尺寸。所有输出保存至 ~/.codex/generated_images/。
SpringBoot项目集成削峰逻辑
在pom.xml中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
application.yml中配置连接参数:
spring:
rabbitmq:
host: localhost
port: 5672
username: codex_user
password: codex_pass
virtual-host: /
listener:
simple:
prefetch: 10
acknowledge-mode: manual
编写订单生产者:调用rabbitTemplate.convertAndSend("order_exchange", "order.create", order)后立即返回“已入队”,不等库存/积分服务响应;
编写订单消费者:@RabbitListener(queues = "order_queue") + @RabbitHandler,处理完调用channel.basicAck()手动确认。
关键控制点:prefetch设为10表示消费者最多预取10条未ACK消息,防止瞬时积压冲垮内存;acknowledge-mode必须为manual,否则消息丢失无感知。
验证削峰能力的压测操作
启动SpringBoot应用后,在CMD中执行:
rabbitmqctl list_queues name messages_ready messages_unacknowledged → 查看order_queue的就绪与未确认消息数;
用JMeter模拟每秒2000次下单请求,持续30秒;
观察RabbitMQ管理界面的Queues标签页:messages_ready应快速攀升至约6万(2000×30),而messages_unacknowledged保持个位数;
同时监控应用日志,确认消费者每秒稳定处理约800条(受数据库IO限制),剩余消息停留在队列中等待“填谷”。
此时关闭JMeter,继续观察:messages_ready数值应随时间推移线性下降,直至归零——这就是“削峰填谷”的完整闭环。














