1、修改TCP的重连机制,只有在发送数据时才connect
This commit is contained in:
parent
e286c355ff
commit
2fd12b9361
@ -29,7 +29,7 @@ public class TCPClient {
|
||||
TCPListener listener;
|
||||
|
||||
public void start() {
|
||||
new Thread(this::connect, host+":"+port+" forwarder tcp-client").start();
|
||||
//new Thread(this::connect, host+":"+port+" forwarder tcp-client").start();
|
||||
}
|
||||
|
||||
public void init(String dest_addr, int dest_port, TCPListener listener) {
|
||||
@ -64,14 +64,14 @@ public class TCPClient {
|
||||
if (!future.isSuccess()) {
|
||||
logger.info("{}:{} tcp connect failed. {}",host,port,future.cause().toString());
|
||||
//重连交给后端线程执行
|
||||
future.channel().eventLoop().schedule(() -> {
|
||||
/*future.channel().eventLoop().schedule(() -> {
|
||||
logger.info("{}:{} tcp client reconnect",host,port);
|
||||
try {
|
||||
connect();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}, 5000, TimeUnit.MILLISECONDS);
|
||||
}, 5000, TimeUnit.MILLISECONDS);*/
|
||||
} else {
|
||||
/*future.channel().config().setWriteBufferWaterMark(new WriteBufferWaterMark(
|
||||
1024 * 1024, // low
|
||||
@ -89,10 +89,26 @@ public class TCPClient {
|
||||
}
|
||||
}
|
||||
|
||||
boolean tryReconnect() throws Exception{
|
||||
new Thread(this::connect, host+":"+port+" forwarder tcp-client").start();
|
||||
for(int i=0; i<20; i++){
|
||||
Thread.sleep(50);
|
||||
if(channel.isActive()) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void writeAndFlush(String json) {
|
||||
ByteBuf sendBuffer = Unpooled.buffer();
|
||||
sendBuffer.writeBytes(json.getBytes(StandardCharsets.UTF_8));
|
||||
logger.info("send to {}: {}",host,json);
|
||||
if(!channel.isActive()){
|
||||
try {
|
||||
if(!tryReconnect()) return;
|
||||
} catch (Exception e) {
|
||||
logger.error(e.toString());
|
||||
}
|
||||
}
|
||||
channel.writeAndFlush(sendBuffer).addListener(future -> {
|
||||
if (future.isSuccess()) {
|
||||
logger.info("send to tcp:"+host+" succeed.");
|
||||
@ -110,7 +126,7 @@ public class TCPClient {
|
||||
}
|
||||
|
||||
public void onDisconnect(boolean isIdle){
|
||||
if(connectTime.isBefore(LocalDateTime.now().minusMinutes(1))) {
|
||||
/*if(connectTime.isBefore(LocalDateTime.now().minusMinutes(1))) {
|
||||
connect();
|
||||
}
|
||||
else{
|
||||
@ -121,7 +137,7 @@ public class TCPClient {
|
||||
logger.error(e.toString());
|
||||
}
|
||||
},isIdle?30:10, TimeUnit.SECONDS);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
public void onMessage(String msg){
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user