From 64c5f6bf3ddb12b298e53fb4da315f5f34ec54ac Mon Sep 17 00:00:00 2001 From: yuejiajun <1530620364@qq.com> Date: Tue, 19 Aug 2025 16:38:40 +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=8D=E8=AE=A1=E5=88=92=E4=BB=BB=E5=8A=A1=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=AD=A3=E5=B8=B8=E5=90=AF=E5=8A=A8proxy=E7=9A=84?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/Resources/rocketmq/sbin/rocketmq.bat | 144 +++++++++------------- 1 file changed, 61 insertions(+), 83 deletions(-) diff --git a/base/Resources/rocketmq/sbin/rocketmq.bat b/base/Resources/rocketmq/sbin/rocketmq.bat index 91529ae..75df620 100644 --- a/base/Resources/rocketmq/sbin/rocketmq.bat +++ b/base/Resources/rocketmq/sbin/rocketmq.bat @@ -1,118 +1,80 @@ @echo off setlocal enabledelayedexpansion chcp 65001 >nul -title RocketMQ 5.x Quick Start (with Proxy) +title RocketMQ Quick Start + +set "SCRIPT_DIR=%~dp0" +cd /d "%SCRIPT_DIR%" if "%ROCKETMQ_HOME%" == "" ( - set "ROCKETMQ_HOME=%~dp0.." + set "ROCKETMQ_HOME=%SCRIPT_DIR%.." 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 + 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... - 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 + call :FIND_JAVA + if errorlevel 1 ( + echo [ERROR] Java not found + exit /b 1 + ) ) ) -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% +echo [INFO] Starting NameServer... +start "RocketMQ NameServer" /B cmd /c ""%ROCKETMQ_HOME%\bin\mqnamesrv.cmd"" -if exist "%ROCKETMQ_HOME%\sbin\store\" ( - set "INITIAL=TRUE" -) +timeout /t 3 /nobreak >nul -start "RocketMQ NameServer" cmd /k "%ROCKETMQ_HOME%\bin\mqnamesrv.cmd" +echo [INFO] Starting Broker... +start "RocketMQ Broker" /B cmd /c ""%ROCKETMQ_HOME%\bin\mqbroker.cmd" -c ../conf/broker-localhost.conf" -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 +timeout /t 5 /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] Starting Proxy (Attempt !RETRY_COUNT!/!MAX_RETRY!)... +start "RocketMQ Proxy" /B cmd /c ""%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 - ) +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 -:: 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 [INFO] Starting Dashboard... + start "RocketMQ Dashboard" /B cmd /c ""%JAVA_HOME%\bin\java" -jar -Dserver.port=8088 "%ROCKETMQ_HOME%\bin\rocketmq-dashboard.jar"" ) -:: ============================================= -:: Status Display -:: ============================================= echo. echo ======================================== -echo RocketMQ Services Successfully Started +echo RocketMQ Services Status echo ======================================== echo - NameServer (Port: 9876) echo - Broker (Port: 10911) @@ -121,5 +83,21 @@ echo - Dashboard (Port: 8080) echo ======================================== echo. -pause -endlocal \ No newline at end of file +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 \ No newline at end of file