From 8f224dbf1a1bd1a65dead7ceda8dd0a3fa567115 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 28 十二月 2023 15:57:09 +0800
Subject: [PATCH] 优化雷达tcp客户端
---
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java | 52 +++++++++++++++++++++++-----------------------------
1 files changed, 23 insertions(+), 29 deletions(-)
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
index cf9ef9a..b30b2b5 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
@@ -1,13 +1,5 @@
package com.ard.utils.netty.tcp;
-/**
- * @Description:
- * @ClassName: init
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�07鏈�05鏃�13:11
- * @Version: 1.0
- **/
-
import com.ard.alarm.radar.domain.ArdEquipRadar;
import com.ard.alarm.radar.service.IArdEquipRadarService;
import com.ard.utils.netty.config.NettyTcpConfiguration;
@@ -37,16 +29,18 @@
@Component
@Slf4j(topic = "netty")
@Order(2)
-public class ClientInitialize {
+public class ClientInitialize implements ApplicationRunner {
@Resource
NettyTcpConfiguration nettyTcpConfig;
@Resource
IArdEquipRadarService ardEquipRadarService;
private Bootstrap bootstrap;
- public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();
- public static ConcurrentHashMap<String, ArdEquipRadar> tureConnectMap = new ConcurrentHashMap();
- public static ConcurrentHashMap<String, Object> SuccessConnectMap = new ConcurrentHashMap();
+ public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();//澶辫触杩炴帴鐨勯浄杈維et
+ public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勯浄杈�
+ public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勬姤鏂囪В鏋愬櫒
+ public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨刵etty閫氶亾
+
/**
* Netty鍒濆鍖栭厤缃�
*/
@@ -64,7 +58,7 @@
}
});
- // 寮傛鎸佺画鐩戝惉杩炴帴澶辫触鐨勫湴鍧�
+ //寮傛鎸佺画鐩戝惉杩炴帴澶辫触鐨勫湴鍧�
CompletableFuture.runAsync(new Runnable() {
@Override
public void run() {
@@ -74,8 +68,8 @@
// 寰幆闆嗗悎鍐呭厓绱�
falseConnectSet.forEach(new Consumer<ArdEquipRadar>() {
@Override
- public void accept(ArdEquipRadar ardEquipRadar) {
- connectServer(ardEquipRadar);
+ public void accept(ArdEquipRadar radar) {
+ connectServer(radar);
}
});
}
@@ -98,23 +92,23 @@
// 鑾峰彇鍦板潃鍙婄鍙�
String host = ardEquipRadar.getIp();
Integer port = ardEquipRadar.getPort();
+ String ipPort = host + ":" + port;
// 寮傛杩炴帴tcp鏈嶅姟绔�
bootstrap.remoteAddress(host, port).connect().addListener((ChannelFuture futureListener) -> {
- if (!futureListener.isSuccess()) {
- log.debug("闆疯揪銆�" + host + ":" + port + "銆戣繛鎺ュけ璐�");
- futureListener.channel().close();
- // 杩炴帴澶辫触淇℃伅鎻掑叆Set
- falseConnectSet.add(ardEquipRadar);
- // 杩炴帴澶辫触淇℃伅浠巑ap绉婚櫎
- tureConnectMap.remove( host + ":" + port);
- SuccessConnectMap.remove(ardEquipRadar.getId());
- } else {
- log.debug("闆疯揪銆�" + host + ":" + port + "銆戣繛鎺ユ垚鍔�");
+ if (futureListener.isSuccess()) {
+ log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ユ垚鍔�");
// 杩炴帴鎴愬姛淇℃伅浠嶴et鎷旈櫎
falseConnectSet.remove(ardEquipRadar);
// 杩炴帴鎴愬姛淇℃伅鍐欏叆map
- tureConnectMap.put(host+":"+port, ardEquipRadar);
- SuccessConnectMap.put(ardEquipRadar.getId(),futureListener.channel());
+ trueConnectMap.put(ipPort, ardEquipRadar);
+ SucMessageHandlerMap.put(ipPort, new MessageHandler());
+ SucChannelMap.put(ipPort, futureListener.channel());
+ } else {
+ log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ュけ璐�");
+ futureListener.channel().close();
+ // 杩炴帴澶辫触淇℃伅鎻掑叆Set
+ falseConnectSet.add(ardEquipRadar);
+
}
});
}
@@ -122,7 +116,7 @@
/**
* 鍒濆鍖栨柟娉�
*/
- // @Override
+ @Override
public void run(ApplicationArguments args) {
if (!nettyTcpConfig.getEnabled()) {
return;
@@ -132,7 +126,7 @@
for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
String host = ardEquipRadar.getIp();
Integer port = Integer.valueOf(ardEquipRadar.getPort());
- log.debug("TCP client try to connect radar銆�" + host + ":" + port+"銆�");
+ log.debug("TCP client try to connect radar銆�" + host + ":" + port + "銆�");
connectServer(ardEquipRadar);//杩炴帴姣忎竴涓浄杈炬湇鍔�
}
}
--
Gitblit v1.9.3