@echo off setlocal enabledelayedexpansion chcp 65001 >nul title RocketMQ 5.x Quick Start (with Proxy) if "%ROCKETMQ_HOME%" == "" ( set "ROCKETMQ_HOME=%~dp0.." echo [INFO] ROCKETMQ_HOME is not set, using default: !ROCKETMQ_HOME! ) 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 ) 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 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% if exist "%ROCKETMQ_HOME%\sbin\store\" ( set "INITIAL=TRUE" ) start "RocketMQ NameServer" cmd /k "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" timeout /t 2 /nobreak >nul start "RocketMQ Broker" cmd /k "%ROCKETMQ_HOME%\bin\mqbroker.cmd" -c ../conf/broker-localhost.conf timeout /t 2 /nobreak >nul set MAX_RETRY=5 set RETRY_COUNT=0 :START_PROXY set /a RETRY_COUNT+=1 start "RocketMQ Proxy" cmd /k "%ROCKETMQ_HOME%\bin\mqproxy.cmd" -n localhost:9876 echo [INFO] Checking if the proxy has started successfully .. timeout /t 5 /nobreak >nul :CHECK_PORT timeout /t 2 /nobreak >nul netstat -ano | findstr ":8081" | findstr "LISTENING" >nul if %ERRORLEVEL% equ 0 ( echo [INFO] Proxy started successfully, port 8081 is listening. goto :START_DASHBOARD ) else ( echo [WARN] Proxy Startup failed, port 8081 is not listening [attempted !RETRY_COUNT!/!MAX_RETRY!] if !RETRY_COUNT! lss !MAX_RETRY! ( timeout /t 2 /nobreak >nul taskkill /FI "WINDOWTITLE eq RocketMQ Proxy" /F >nul 2>&1 goto :START_PROXY ) else ( echo [ERROR] Proxy Startup failed, maximum retry attempts have been reached !MAX_RETRY! goto :START_DASHBOARD ) ) :START_DASHBOARD :: 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" ) :: ============================================= :: Status Display :: ============================================= echo. echo ======================================== echo RocketMQ Services Successfully Started echo ======================================== echo - NameServer (Port: 9876) echo - Broker (Port: 10911) echo - Proxy (Port: 8081) echo - Dashboard (Port: 8080) echo ======================================== echo. pause endlocal