| 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) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|