From c832bac92ad35a513a862504e43de7fcc4f4c525 Mon Sep 17 00:00:00 2001 From: yuejiajun <1530620364@qq.com> Date: Tue, 19 Aug 2025 16:11:50 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=9F=BA=E7=A1=80=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E3=80=91rocketmq=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dproxy=E5=90=AF=E5=8A=A8=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/Resources/rocketmq/sbin/rocketmq.bat | 87 +++++++++++++---------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/base/Resources/rocketmq/sbin/rocketmq.bat b/base/Resources/rocketmq/sbin/rocketmq.bat index 1745561..91529ae 100644 --- a/base/Resources/rocketmq/sbin/rocketmq.bat +++ b/base/Resources/rocketmq/sbin/rocketmq.bat @@ -3,14 +3,11 @@ setlocal enabledelayedexpansion chcp 65001 >nul title RocketMQ 5.x Quick Start (with Proxy) -:: 1. 检查 ROCKETMQ_HOME 是否存在 if "%ROCKETMQ_HOME%" == "" ( - :: 如果未设置,尝试使用上级的上级目录作为默认值 - set "ROCKETMQ_HOME=%~dp0..\" + 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 @@ -18,7 +15,6 @@ if not exist "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" ( exit /b 1 ) -:: 3. 检查 JAVA_HOME if "%JAVA_HOME%" == "" ( echo [WARN] JAVA_HOME is not set, trying to find Java automatically... goto :FOUNING_JAVA @@ -31,7 +27,6 @@ if "%JAVA_HOME%" == "" ( ) :FOUNING_JAVA -:: 尝试在常见位置查找Java echo FOUNDING ===== START for %%d in ( "%ProgramFiles%\Java\" @@ -41,7 +36,7 @@ for %%d in ( "%~dp0..\..\jdk" "%~dp0..\..\java" ) do ( - echo [INFO] == %%~d + echo [INFO] == %%~d if exist "%%~d\bin\java.exe" ( set "JAVA_HOME=%%~d" echo [INFO] Found Java at: !JAVA_HOME! @@ -50,7 +45,7 @@ for %%d in ( ) 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 @@ -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 pause exit /b 1 - + :START_SERVER echo [INFO] Using JAVA_HOME: %JAVA_HOME% @@ -70,43 +65,61 @@ if exist "%ROCKETMQ_HOME%\sbin\store\" ( set "INITIAL=TRUE" ) -:: 4. 启动 NameServer 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. 启动 Proxy(RocketMQ 5.x 推荐方式) -start "RocketMQ Proxy" cmd /k "%ROCKETMQ_HOME%\bin\mqproxy.cmd" -n localhost:9876 - -:: 等待 Proxy 启动 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" ) -echo RocketMQ 5.x 服务已启动: -echo - NameServer (端口: 9876) -echo - Broker (端口: 10911) -echo - Proxy (端口: 8081) -echo - Dashboard (端口: 8080) +:: ============================================= +:: 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. -:: if "%INITIAL%"="" ( -:: timeout /t 2 /nobreak >nul -:: echo RocketMQ 数据初始化... -:: start "Rocket Create Topic" "initial-topic.bat" -:: start "Rocket Create Consumer" "initial-consumer.bat" -:: ) pause endlocal \ No newline at end of file