在Windows 操作系统中多个springboot项目怎么依赖部署

简介 描述:我的springboot项目依赖于其他服务,比如mysql,redis还有一个exe程序,只有当这些启动后,才可以启动springboot项目使用上面两个方案怎么实现?我同时还要部署多个springboot项目,启动顺序:xxl-job>collect>admin 这样的顺序。因为我是springboot项目,想要配置成项目开机自启切依赖关系如我设置的。应该怎么实现?多

🔔🔔好消息!好消息!🔔🔔

有需要的朋友👉:微信号 kaigejava2022

描述:

我的spring boot项目依赖于其他服务,比如mysql,redis还有一个exe程序,只有当这些启动后,才可以启动spring boot项目 使用上面两个方案怎么实现?我同时还要部署多个spring boot 项目,启动顺序:xxl-job>collect>admin  这样的顺序。因为我是spring boot项目,想要配置成项目开机自启切依赖关系如我设置的。应该怎么实现?

多Spring Boot项目依赖管理与启动顺序配置方案

根据您的需求,需要确保多个Spring Boot项目(xxl-job > collect > admin)按顺序启动,同时这些项目还依赖于MySQL、Redis和一个exe程序的启动。以下是两种完整解决方案:

方案一:使用WinSW注册为Windows服务(推荐生产环境)

1. 准备工作

  • 下载WinSW.NET4.exe并重命名为与项目相关的名称(如xxl-job.execollect.exeadmin.exe)

  • 确保MySQL和Redis已安装为Windows服务

  • 将exe程序注册为Windows服务(可使用NSSM工具)‌

2. 配置各项目服务文件

xxl-job服务配置(xxl-job.xml)‌:

<service>

  <id>xxl-job</id>

  <name>XXL-JOB Service</name>

  <description>XXL-JOB任务调度服务</description>

  <executable>java</executable>

  <arguments>-jar xxl-job-admin.jar</arguments>

  <startmode>Automatic</startmode>

  <depend>MySQL57</depend>

  <depend>Redis</depend>

  <depend>MyExeService</depend>

</service>


‌collect服务配置(collect.xml)‌:

<service>

  <id>collect</id>

  <name>Collect Service</name>

  <description>数据采集服务</description>

  <executable>java</executable>

  <arguments>-jar collect-service.jar</arguments>

  <startmode>Automatic</startmode>

  <depend>xxl-job</depend>

</service>




‌admin服务配置(admin.xml)‌:

<service>

  <id>admin</id>

  <name>Admin Service</name>

  <description>后台管理服务</description>

  <executable>java</executable>

  <arguments>-jar admin-service.jar</arguments>

  <startmode>Automatic</startmode>

  <depend>collect</depend>

</service>

3. 安装并配置服务

  1. 1.为每个项目安装服务:

xxl-job.exe install

collect.exe install

admin.exe install


2‌.验证服务依赖关系:

sc config "collect" depend= "xxl-job"

sc config "admin" depend= "collect"

在服务管理器中确认依赖关系已正确设置‌

方案二:使用Bat脚本实现顺序启动(适合开发环境)

1. 创建主启动脚本(start_all.bat)

@echo off

REM 启动MySQL服务

echo Starting MySQL service...

net start MySQL57

ping -n 10 127.0.0.1 >nul


REM 启动Redis服务

echo Starting Redis service...

net start Redis

ping -n 10 127.0.0.1 >nul


REM 启动exe程序

echo Starting MyExeProgram...

start "" "C:\path\to\myprogram.exe"

ping -n 15 127.0.0.1 >nul


REM 检查依赖是否就绪

:check_dependencies

tasklist | find /i "mysqld.exe" >nul

if %errorlevel% neq 0 goto :wait_mysql

tasklist | find /i "redis-server.exe" >nul

if %errorlevel% neq 0 goto :wait_redis

tasklist | find /i "myprogram.exe" >nul

if %errorlevel% neq 0 goto :wait_exe

goto start_services


:wait_mysql

echo Waiting for MySQL to start...

ping -n 5 127.0.0.1 >nul

goto check_dependencies


:wait_redis

echo Waiting for Redis to start...

ping -n 5 127.0.0.1 >nul

goto check_dependencies


:wait_exe

echo Waiting for MyExeProgram to start...

ping -n 5 127.0.0.1 >nul

goto check_dependencies


REM 启动xxl-job服务

:start_services

echo Starting xxl-job service...

start "xxl-job" cmd /k java -jar xxl-job-admin.jar

ping -n 20 127.0.0.1 >nul


REM 检查xxl-job是否启动完成

:check_xxl_job

tasklist | find /i "java" | find /i "xxl-job-admin.jar" >nul

if %errorlevel% neq 0 (

    ping -n 5 127.0.0.1 >nul

    goto check_xxl_job

)


REM 启动collect服务

echo Starting collect service...

start "collect" cmd /k java -jar collect-service.jar

ping -n 15 127.0.0.1 >nul


REM 检查collect是否启动完成

:check_collect

tasklist | find /i "java" | find /i "collect-service.jar" >nul

if %errorlevel% neq 0 (

    ping -n 5 127.0.0.1 >nul

    goto check_collect

)


REM 启动admin服务

echo Starting admin service...

start "admin" cmd /k java -jar admin-service.jar


echo All services started in correct order.

pause

2. 添加脚本到启动项

  1. 按Win+R,输入shell:startup打开启动文件夹

  2. start_all.bat文件复制到该文件夹

  3. 或者通过组策略(gpedit.msc)添加启动脚本‌56

方案对比

方案优点缺点适用场景
WinSW服务稳定性高,系统级管理,支持自动重启配置稍复杂,需了解服务依赖关系生产环境,长期运行的服务
Bat脚本简单易用,灵活控制启动顺序依赖用户会话,稳定性较低开发测试环境,临时使用

注意事项

  1. 服务名称确认‌:使用sc query命令确认MySQL和Redis服务的实际名称‌

  2. 启动延迟设置‌:根据项目实际启动时间调整ping延迟时间‌

  3. 日志记录‌:两种方案都应配置日志记录,便于排查启动问题‌

  4. 权限要求‌:两种方案都需要管理员权限进行初始配置‌

  5. 端口冲突检查‌:确保各服务配置了不同的端口号,避免冲突‌

  6. exe程序注册‌:对于非服务exe程序,建议使用NSSM工具注册为服务



TopTop