【基础环境】rocketmq启动脚本,修复proxy启动失败

This commit is contained in:
yuejiajun 2025-08-19 16:11:50 +08:00
parent 1c1c077a8c
commit c832bac92a

View File

@ -3,14 +3,11 @@ setlocal enabledelayedexpansion
chcp 65001 >nul chcp 65001 >nul
title RocketMQ 5.x Quick Start (with Proxy) title RocketMQ 5.x Quick Start (with Proxy)
:: 1. 检查 ROCKETMQ_HOME 是否存在
if "%ROCKETMQ_HOME%" == "" ( if "%ROCKETMQ_HOME%" == "" (
:: 如果未设置,尝试使用上级的上级目录作为默认值 set "ROCKETMQ_HOME=%~dp0.."
set "ROCKETMQ_HOME=%~dp0..\"
echo [INFO] ROCKETMQ_HOME is not set, using default: !ROCKETMQ_HOME! echo [INFO] ROCKETMQ_HOME is not set, using default: !ROCKETMQ_HOME!
) )
:: 2. 检查 mqnamesrv.cmd 是否存在
if not exist "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" ( if not exist "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" (
echo [ERROR] mqnamesrv.cmd not found in %ROCKETMQ_HOME%\bin echo [ERROR] mqnamesrv.cmd not found in %ROCKETMQ_HOME%\bin
echo Please set correct ROCKETMQ_HOME environment variable echo Please set correct ROCKETMQ_HOME environment variable
@ -18,7 +15,6 @@ if not exist "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" (
exit /b 1 exit /b 1
) )
:: 3. 检查 JAVA_HOME
if "%JAVA_HOME%" == "" ( if "%JAVA_HOME%" == "" (
echo [WARN] JAVA_HOME is not set, trying to find Java automatically... echo [WARN] JAVA_HOME is not set, trying to find Java automatically...
goto :FOUNING_JAVA goto :FOUNING_JAVA
@ -31,7 +27,6 @@ if "%JAVA_HOME%" == "" (
) )
:FOUNING_JAVA :FOUNING_JAVA
:: 尝试在常见位置查找Java
echo FOUNDING ===== START echo FOUNDING ===== START
for %%d in ( for %%d in (
"%ProgramFiles%\Java\" "%ProgramFiles%\Java\"
@ -41,7 +36,7 @@ for %%d in (
"%~dp0..\..\jdk" "%~dp0..\..\jdk"
"%~dp0..\..\java" "%~dp0..\..\java"
) do ( ) do (
echo [INFO] == %%~d echo [INFO] == %%~d
if exist "%%~d\bin\java.exe" ( if exist "%%~d\bin\java.exe" (
set "JAVA_HOME=%%~d" set "JAVA_HOME=%%~d"
echo [INFO] Found Java at: !JAVA_HOME! echo [INFO] Found Java at: !JAVA_HOME!
@ -50,7 +45,7 @@ for %%d in (
) )
echo FOUNDING ===== END echo FOUNDING ===== END
goto :NOT_FOUND_JAVA goto :NOT_FOUND_JAVA
:NOT_FOUND :NOT_FOUND
echo [ERROR] java.exe not found in %JAVA_HOME%\bin echo [ERROR] java.exe not found in %JAVA_HOME%\bin
echo Please set correct JAVA_HOME environment variable echo Please set correct JAVA_HOME environment variable
@ -62,7 +57,7 @@ echo [ERROR] Java not found automatically and JAVA_HOME is not set
echo Please install Java or set JAVA_HOME environment variable echo Please install Java or set JAVA_HOME environment variable
pause pause
exit /b 1 exit /b 1
:START_SERVER :START_SERVER
echo [INFO] Using JAVA_HOME: %JAVA_HOME% echo [INFO] Using JAVA_HOME: %JAVA_HOME%
@ -70,43 +65,61 @@ if exist "%ROCKETMQ_HOME%\sbin\store\" (
set "INITIAL=TRUE" set "INITIAL=TRUE"
) )
:: 4. 启动 NameServer
start "RocketMQ NameServer" cmd /k "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" start "RocketMQ NameServer" cmd /k "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd"
:: 等待 NameServer 启动
timeout /t 5 /nobreak >nul
:: 5. 启动 Broker如果需要直接访问 Broker可单独启动
:: start "RocketMQ Broker" cmd /k "%ROCKETMQ_HOME%\bin\mqbroker.cmd" -n localhost:9876
:: start "RocketMQ Broker" cmd /k "%ROCKETMQ_HOME%\bin\mqbroker.cmd" -n localhost:9876 autoCreateTopicEnable=true
:: start "RocketMQ Broker" cmd /k "%ROCKETMQ_HOME%\bin\mqbroker.cmd" -n localhost:9876 -c ../conf/broker.conf
start "RocketMQ Broker" cmd /k "%ROCKETMQ_HOME%\bin\mqbroker.cmd" -c ../conf/broker-localhost.conf
:: 等待 Broker 启动
timeout /t 10 /nobreak >nul
:: 6. 启动 ProxyRocketMQ 5.x 推荐方式)
start "RocketMQ Proxy" cmd /k "%ROCKETMQ_HOME%\bin\mqproxy.cmd" -n localhost:9876
:: 等待 Proxy 启动
timeout /t 2 /nobreak >nul 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可选 :: 7. 启动 Dashboard可选
if exist "%ROCKETMQ_HOME%\bin\rocketmq-dashboard.jar" ( 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" 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) :: Status Display
echo - Broker (端口: 10911) :: =============================================
echo - Proxy (端口: 8081) echo.
echo - Dashboard (端口: 8080) 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.
:: if "%INITIAL%"="" (
:: timeout /t 2 /nobreak >nul
:: echo RocketMQ 数据初始化...
:: start "Rocket Create Topic" "initial-topic.bat"
:: start "Rocket Create Consumer" "initial-consumer.bat"
:: )
pause pause
endlocal endlocal