@echo off setlocal enabledelayedexpansion chcp 65001 >nul :: title RocketMQ Quick Start set "SCRIPT_DIR=%~dp0" cd /d "%SCRIPT_DIR%" if "%ROCKETMQ_HOME%" == "" ( set "ROCKETMQ_HOME=%SCRIPT_DIR%.." echo [INFO] ROCKETMQ_HOME is not set, using default: !ROCKETMQ_HOME! ) if "%JAVA_HOME%" == "" ( echo [WARN] JAVA_HOME is not set, trying to find Java automatically... call :FIND_JAVA if errorlevel 1 ( echo [ERROR] Java not found exit /b 1 ) ) else ( if not exist "%JAVA_HOME%\bin\java.exe" ( echo [WARN] %JAVA_HOME%\bin\java.exe is not exist, trying to find Java automatically... call :FIND_JAVA if errorlevel 1 ( echo [ERROR] Java not found exit /b 1 ) ) ) echo [INFO] Starting NameServer... start "RocketMQ NameServer" /B cmd /c ""%ROCKETMQ_HOME%\bin\mqnamesrv.cmd"" timeout /t 3 /nobreak >nul echo [INFO] Starting Broker... start "RocketMQ Broker" /B cmd /c ""%ROCKETMQ_HOME%\bin\mqbroker.cmd" -c ../conf/broker-localhost.conf" timeout /t 5 /nobreak >nul set MAX_RETRY=5 set RETRY_COUNT=0 :START_PROXY set /a RETRY_COUNT+=1 echo [INFO] Starting Proxy (Attempt !RETRY_COUNT!/!MAX_RETRY!)... start "RocketMQ Proxy" /B cmd /c ""%ROCKETMQ_HOME%\bin\mqproxy.cmd" -n localhost:9876" echo [INFO] Checking proxy status... set PORT_OPEN=0 for /l %%i in (1,1,10) do ( timeout /t 1 /nobreak >nul netstat -ano | findstr ":8081" | findstr "LISTENING" >nul && set PORT_OPEN=1 if !PORT_OPEN! equ 1 goto :PROXY_SUCCESS ) if !RETRY_COUNT! lss !MAX_RETRY! ( taskkill /f /im java.exe /fi "WINDOWTITLE eq RocketMQ Proxy" >nul 2>&1 goto :START_PROXY ) else ( echo [ERROR] Failed to start Proxy after !MAX_RETRY! attempts goto :START_DASHBOARD ) :PROXY_SUCCESS echo [INFO] Proxy started successfully :START_DASHBOARD if exist "%ROCKETMQ_HOME%\bin\rocketmq-dashboard.jar" ( echo [INFO] Starting Dashboard... start "RocketMQ Dashboard" /B cmd /c ""%JAVA_HOME%\bin\java" -jar -Dserver.port=8088 "%ROCKETMQ_HOME%\bin\rocketmq-dashboard.jar"" ) :: echo. :: echo ======================================== :: echo RocketMQ Services Status :: echo ======================================== :: echo - NameServer (Port: 9876) :: echo - Broker (Port: 10911) :: echo - Proxy (Port: 8081) :: echo - Dashboard (Port: 8080) :: echo ======================================== :: echo. exit /b 0 :FIND_JAVA for %%d in ( "%ProgramFiles%\Java\" "%ProgramFiles(x86)%\Java\" "%ROCKETMQ_HOME%\jdk" "%ROCKETMQ_HOME%\java" "%ROCKETMQ_HOME%\..\jdk" "%ROCKETMQ_HOME%\..\java" ) do ( if exist "%%~d\bin\java.exe" ( set "JAVA_HOME=%%~d" echo [INFO] Found Java at: !JAVA_HOME! exit /b 0 ) ) exit /b 1