| New file | 
 |  |  | 
 |  |  | package com.dy.pipIrrRemote.msCenter; | 
 |  |  |  | 
 |  |  | import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw; | 
 |  |  | import com.dy.pipIrrGlobal.util.Org; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.boot.context.event.ApplicationReadyEvent; | 
 |  |  | import org.springframework.context.ApplicationListener; | 
 |  |  | import org.springframework.core.env.Environment; | 
 |  |  | import org.springframework.core.io.ResourceLoader; | 
 |  |  | import org.springframework.lang.NonNull; | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  | import org.springframework.web.client.RestTemplate; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Timer; | 
 |  |  | import java.util.TimerTask; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * @Author: liurunyu | 
 |  |  |  * @Date: 2025/2/13 9:47 | 
 |  |  |  * @Description | 
 |  |  |  */ | 
 |  |  | @Slf4j | 
 |  |  | @Component | 
 |  |  | public class Register2MwMsCenterListener extends Web2RtuMw implements ApplicationListener<ApplicationReadyEvent> { | 
 |  |  |     @Autowired | 
 |  |  |     private Environment env; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private RestTemplate restTemplate; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     protected ResourceLoader resourceLoader; | 
 |  |  |  | 
 |  |  |     @Value("${mw.mwMsCenterReceiveUrl_rm}") | 
 |  |  |     protected String mwMsCenterReceiveUrl;//消息接收网址 | 
 |  |  |  | 
 |  |  |     private static final String mwParamName = "msReceiverWebUrl" ; | 
 |  |  |  | 
 |  |  |     private List<Org.OrgVo> orgs; | 
 |  |  |  | 
 |  |  |     private Timer timer; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * SpringBoot容器已经准备好了,执行下面方法 | 
 |  |  |      * | 
 |  |  |      * @param event 事件 | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public void onApplicationEvent(@NonNull ApplicationReadyEvent event) { | 
 |  |  |         try { | 
 |  |  |             //等1秒,等待com.alibaba.druid.pool.DruidDataSource初始化完成 | 
 |  |  |             Thread.sleep(1000L); | 
 |  |  |         } catch (InterruptedException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } finally { | 
 |  |  |             try { | 
 |  |  |                 this.start(event); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 log.error("向通信中间件注册消息接收者出错", e); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 执行业务逻辑 | 
 |  |  |      * @param event | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     private void start(ApplicationReadyEvent event) throws Exception { | 
 |  |  |         if(mwMsCenterReceiveUrl == null || mwMsCenterReceiveUrl.trim().equals("")){ | 
 |  |  |             throw new Exception("通信中间件消息接收网址未配置"); | 
 |  |  |         } | 
 |  |  |         orgs = super.get(resourceLoader); | 
 |  |  |         if(orgs != null && orgs.size() > 0) { | 
 |  |  |             this.timer = new Timer(); | 
 |  |  |             this.timer.schedule(new TimerTask() { | 
 |  |  |                 public void run() { | 
 |  |  |                     register(event) ; | 
 |  |  |                 } | 
 |  |  |             }, 100 , 5 * 60 * 1000); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向通信中间件注册消息接收者 | 
 |  |  |      * @param event | 
 |  |  |      */ | 
 |  |  |     private void register(ApplicationReadyEvent event){ | 
 |  |  |         for (Org.OrgVo vo : this.orgs){ | 
 |  |  |             String rqUrl = this.get2MwRequestUrl(this.env, vo.tag, ContextRegisterMsReceiverWebUrl) ; | 
 |  |  |             sendGetRequest2Mw(restTemplate, rqUrl, mwParamName, mwMsCenterReceiveUrl) ; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |