liusuyi
2026-05-14 9958bc1501d0daee954d9bba383475e55e24ebab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.ard.zlm.runner;
 
import com.ard.zlm.config.MediaConfig;
import com.ard.zlm.config.UserSetting;
import com.ard.zlm.api.domain.ZlmMediaServer;
import com.ard.zlm.mediaServer.MediaServerChangeEvent;
import com.ard.zlm.service.IMediaServerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
 
import java.util.List;
 
/**
 *
 * 启动是从配置文件加载节点信息,以及发送个节点状态管理去控制节点状态
 *
 * @FileName MediaServerRunner
 * @Description
 * @Author fengcheng
 * @date 2026-03-31
 **/
@Slf4j
@Component
@Order(value=12)
public class MediaServerRunner implements CommandLineRunner {
 
    @Autowired
    private IMediaServerService mediaServerService;
 
    @Autowired
    private MediaConfig mediaConfig;
 
    @Autowired
    private UserSetting userSetting;
 
    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;
 
    @Override
    public void run(String... args) throws Exception {
        ZlmMediaServer defaultMediaServer = mediaServerService.getDefaultMediaServer();
        ZlmMediaServer mediaSerItemInConfig = mediaConfig.getMediaSerItem();
        mediaSerItemInConfig.setServerId(userSetting.getServerId());
 
        if (defaultMediaServer != null && mediaSerItemInConfig.getId().equals(defaultMediaServer.getId())) {
            mediaServerService.update(mediaSerItemInConfig);
        }else {
            if (defaultMediaServer != null) {
                mediaServerService.delete(defaultMediaServer);
            }
            ZlmMediaServer mediaServerItem = mediaServerService.getOneFromDatabase(mediaSerItemInConfig.getId());
            if (mediaServerItem == null) {
                mediaServerService.add(mediaSerItemInConfig);
            }else {
                mediaServerService.update(mediaSerItemInConfig);
            }
        }
 
        // 获取所有的zlm, 并开启主动连接
        List<ZlmMediaServer> all = mediaServerService.getAllFromDatabase();
        log.info("[媒体节点] 加载节点列表, 共{}个节点", all.size());
        MediaServerChangeEvent event = new MediaServerChangeEvent(this);
        event.setMediaServerItemList(all);
        applicationEventPublisher.publishEvent(event);
    }
}