‘liusuyi’
2023-09-22 664a3e05297f66f480e495b1156269970cce3958
规范外部程序启动,增加redis随项目启动
已添加2个文件
已修改2个文件
已删除1个文件
320 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/cmd/startup.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/META-INF/spring.factories 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/cmd/startup.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,170 @@
package com.ruoyi.cmd;
import com.ruoyi.utils.process.CmdUtils;
import com.sun.jna.Platform;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @Description: å¤–部程序启动
 * @ClassName: startup
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´09月22日9:56:57
 **/
@Slf4j(topic = "cmd")
@Component
public class startup implements ApplicationContextInitializer {
    //minio
    String minioName = "minio.exe";
    @Value("${minio.accessKey}")
    String accessKey;
    @Value("${minio.secretKey}")
    String secretKey;
    @Value("${minio.path}")
    String path;
    @Value("${minio.enabled}")
    Boolean minioEnabled;
    //mediamtx
    String mediamtxName = "mediamtx.exe";
    @Value("${mediamtx.enabled}")
    Boolean mediamtxEnabled;
    //webrtc-streamer
    String webrtcName = "webrtc-streamer.exe";
    @Value("${webrtc.host}")
    String webrtcHost;
    @Value("${webrtc.enabled}")
    Boolean webrtcEnabled;
    //redis
    String redisName = "redis-server.exe";
    /**
     * ç¨‹åºåˆå§‹åŒ–启动redis
     * åˆ˜è‹ä¹‰
     * 2023/9/22 10:38:41
     */
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        if (Platform.isWindows()) {
            String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "redis" + File.separator + redisName;
            List<String> cmd = new ArrayList<>();
            cmd.add(exePath);
            if (CmdUtils.isProcessRunning(redisName)) {
                // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                CmdUtils.stopProcess(redisName);
            }
            // å¯åŠ¨åŽå°è¿›ç¨‹
            CmdUtils.commandStart(redisName, cmd, null);
            // å¯åЍcmd窗口
//                String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"};
//                CmdUtils.commandStart(command);
        }
    }
    @PostConstruct
    public void init() {
        if (minioEnabled) {
            log.debug("初始化启动minio");
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "minio" + File.separator + minioName;
                Map<String, String> env = new HashMap<>();
                env.put("MINIO_ROOT_USER", accessKey);
                env.put("MINIO_ROOT_PASSWORD", secretKey);
                List<String> cmd = new ArrayList<>();
                cmd.add(exePath);
                cmd.add("server");
                cmd.add(path);
                cmd.add("--console-address=0.0.0.0:9000");
                cmd.add("--address=0.0.0.0:9001");
                if (CmdUtils.isProcessRunning(minioName)) {
                    // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                    CmdUtils.stopProcess(minioName);
                }
                // å¯åŠ¨åŽå°è¿›ç¨‹
                CmdUtils.commandStart(minioName, cmd, env);
                // å¯åЍcmd窗口
                //String[] command = {"cmd", "/c", "start", exePath};
                //CmdUtils.commandStart(command);
            }
        }
        if (mediamtxEnabled) {
            log.debug("初始化启动mediaMTX");
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + mediamtxName;
                String ymlPath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.yml";
                List<String> cmd = new ArrayList<>();
                cmd.add(exePath);
                cmd.add(ymlPath);
                if (CmdUtils.isProcessRunning(mediamtxName)) {
                    // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                    CmdUtils.stopProcess(mediamtxName);
                }
                // å¯åŠ¨åŽå°è¿›ç¨‹
                CmdUtils.commandStart(mediamtxName, cmd, null);
                // å¯åЍcmd窗口
//            String[] command = {"cmd","/c","start",exePath,ymlPath};
//            CmdUtils.commandStart(command);
            }
        }
        if (webrtcEnabled) {
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + webrtcName;
                List<String> cmd = new ArrayList<>();
                cmd.add(exePath);
                cmd.add("-H" + webrtcHost);
                cmd.add("-o");
                if (CmdUtils.isProcessRunning(webrtcName)) {
                    // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                    CmdUtils.stopProcess(webrtcName);
                }
                // å¯åŠ¨åŽå°è¿›ç¨‹
                CmdUtils.commandStart(webrtcName, cmd, null);
                // å¯åЍcmd窗口
//                String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"};
//                CmdUtils.commandStart(command);
            }
        }
    }
    @PreDestroy
    public void destroy() {
        if (minioEnabled) {
            log.info("销毁minio");
            if (CmdUtils.isProcessRunning(minioName)) {
                // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                CmdUtils.stopProcess(minioName);
            }
        }
        if (mediamtxEnabled) {
            log.info("销毁mediaMtx");
            if (CmdUtils.isProcessRunning(mediamtxName)) {
                // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                CmdUtils.stopProcess(mediamtxName);
            }
        }
        if (webrtcEnabled) {
            log.info("销毁webrtc-streamer");
            if (CmdUtils.isProcessRunning(webrtcName)) {
                // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                CmdUtils.stopProcess(webrtcName);
            }
        }
        if (true) {
            log.info("销毁redis");
            if (CmdUtils.isProcessRunning(redisName)) {
                // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                CmdUtils.stopProcess(redisName);
            }
        }
    }
}
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
@@ -44,12 +44,8 @@
    @Value("${mediamtx.host}")
    String mediamtxHost;
    @Value("${mediamtx.enabled}")
    Boolean mediamtxEnabled;
    @Value("${mediamtx.software_decoding}")
    Boolean softwareDecoding;
    String processName = "mediamtx.exe";
    @Override
    public void run(ApplicationArguments args) {
@@ -70,41 +66,6 @@
            }
        } catch (Exception ex) {
            log.error("加载流媒体列表异常:" + ex.getMessage());
        }
    }
    @PostConstruct
    public void initMediaMtx() {
        if (mediamtxEnabled) {
            log.debug("初始化启动mediaMTX");
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.exe";
                String ymlPath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.yml";
                List<String> cmd = new ArrayList<>();
                cmd.add(exePath);
                cmd.add(ymlPath);
                if (CmdUtils.isProcessRunning(processName)) {
                    // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                    CmdUtils.stopProcess(processName);
                }
                // å¯åŠ¨åŽå°è¿›ç¨‹
                CmdUtils.commandStart(processName, cmd, null);
                // å¯åЍcmd窗口
//            String[] command = {"cmd","/c","start",exePath,ymlPath};
//            CmdUtils.commandStart(command);
            }
        }
    }
    @PreDestroy
    public void destroyMediaMtx() {
        if (mediamtxEnabled) {
            log.info("销毁mediaMtx");
            if (CmdUtils.isProcessRunning(processName)) {
                // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                CmdUtils.stopProcess(processName);
            }
        }
    }
ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
ÎļþÒÑɾ³ý
ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
@@ -39,53 +39,6 @@
    @Resource
    private StorageMinioEventMapper storageMinioEventMapper;
    @Value("${minio.accessKey}")
    String accessKey;
    @Value("${minio.secretKey}")
    String secretKey;
    @Value("${minio.path}")
    String path;
    @Value("${minio.enabled}")
    Boolean enabled;
    String processName = "minio.exe";
    @PostConstruct
    public void initMinio() {
        if (enabled) {
            log.debug("初始化启动minio");
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "minio" + File.separator + processName;
                Map<String, String> env=new HashMap<>();
                env.put("MINIO_ROOT_USER",accessKey);
                env.put("MINIO_ROOT_PASSWORD",secretKey);
                List<String> cmd = new ArrayList<>();
                cmd.add(exePath);
                cmd.add("server");
                cmd.add(path);
                cmd.add("--console-address=0.0.0.0:9000");
                cmd.add("--address=0.0.0.0:9001");
                if (CmdUtils.isProcessRunning(processName)) {
                    // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                    CmdUtils.stopProcess(processName);
                }
                // å¯åŠ¨åŽå°è¿›ç¨‹
                CmdUtils.commandStart(processName, cmd, env);
                // å¯åЍcmd窗口
                //String[] command = {"cmd", "/c", "start", exePath};
                //CmdUtils.commandStart(command);
            }
        }
    }
    @PreDestroy
    public void destroyMinio() {
        if (enabled) {
            log.info("销毁minio");
            if (CmdUtils.isProcessRunning(processName)) {
                // è¿›ç¨‹å·²ç»åœ¨è¿è¡Œï¼Œç»“束该进程
                CmdUtils.stopProcess(processName);
            }
        }
    }
    /**
     * æŸ¥è¯¢å­˜å‚¨äº‹ä»¶
ruoyi-admin/src/main/resources/META-INF/spring.factories
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
org.springframework.context.ApplicationContextInitializer=com.ruoyi.cmd.startup