@echo off setlocal enabledelayedexpansion chcp 65001 title RocketMQ 5.x Quick Start (with Proxy) :: 1. 检查 ROCKETMQ_HOME 是否存在 if "%ROCKETMQ_HOME%" == "" ( :: 如果未设置,尝试使用上级的上级目录作为默认值 set "ROCKETMQ_HOME=%~dp0..\" echo [INFO] ROCKETMQ_HOME is not set, using default: !ROCKETMQ_HOME! ) :: 2. 检查 mqnamesrv.cmd 是否存在 if not exist "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" ( echo [ERROR] mqnamesrv.cmd not found in %ROCKETMQ_HOME%\bin echo Please set correct ROCKETMQ_HOME environment variable pause exit /b 1 ) :: 3. 检查 JAVA_HOME if "%JAVA_HOME%" == "" ( echo [WARN] JAVA_HOME is not set, trying to find Java automatically... goto :FOUNING_JAVA ) else ( if not exist "%JAVA_HOME%\bin\java.exe" ( echo [WARN] %JAVA_HOME%\bin\java.exe is not exist, trying to find Java automatically... goto :FOUNING_JAVA ) goto :START_SERVER ) :FOUNING_JAVA :: 尝试在常见位置查找Java echo FOUNDING ===== START for %%d in ( "%ProgramFiles%\Java\" "%ProgramFiles(x86)%\Java\" "%~dp0..\jdk" "%~dp0..\java" "%~dp0..\..\jdk" "%~dp0..\..\java" ) do ( echo [INFO] == %%~d if exist "%%~d\bin\java.exe" ( set "JAVA_HOME=%%~d" echo [INFO] Found Java at: !JAVA_HOME! goto :START_SERVER ) ) echo FOUNDING ===== END goto :NOT_FOUND_JAVA :NOT_FOUND echo [ERROR] java.exe not found in %JAVA_HOME%\bin echo Please set correct JAVA_HOME environment variable pause exit /b 1 :NOT_FOUND_JAVA echo [ERROR] Java not found automatically and JAVA_HOME is not set echo Please install Java or set JAVA_HOME environment variable pause exit /b 1 :START_SERVER echo [INFO] Using JAVA_HOME: %JAVA_HOME% :: 4. 启动 NameServer start "RocketMQ NameServer" cmd /k "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" :: 等待 NameServer 启动 timeout /t 10 /nobreak >nul :: 5. 启动 Broker(如果需要直接访问 Broker,可单独启动) start "RocketMQ Broker" cmd /k "%ROCKETMQ_HOME%\bin\mqbroker.cmd" -n localhost:9876 autoCreateTopicEnable=true :: 等待 Broker 启动 timeout /t 10 /nobreak >nul :: 6. 启动 Proxy(RocketMQ 5.x 推荐方式) start "RocketMQ Proxy" cmd /k "%ROCKETMQ_HOME%\bin\mqproxy.cmd" -n localhost:9876 :: 等待 Proxy 启动 timeout /t 2 /nobreak >nul :: 7. 启动 Dashboard(可选) if exist "%ROCKETMQ_HOME%\bin\rocketmq-dashboard.jar" ( start "RocketMQ Dashboard" cmd /k "%JAVA_HOME%\bin\java -jar -Dserver.port=8088 %ROCKETMQ_HOME%\bin\rocketmq-dashboard.jar" ) echo RocketMQ 5.x 服务已启动: echo - NameServer (端口: 9876) echo - Broker (端口: 10911) echo - Proxy (端口: 8081) echo - Dashboard (端口: 8080) pause endlocal