|
|
@@ -4,6 +4,7 @@ import com.alibaba.nacos.api.NacosFactory; |
|
|
|
import com.alibaba.nacos.api.PropertyKeyConst; |
|
|
|
import com.alibaba.nacos.api.config.ConfigService; |
|
|
|
import com.alibaba.nacos.api.exception.NacosException; |
|
|
|
import com.telpo.dipperposition.co.PositionConfigInfo; |
|
|
|
import com.telpo.dipperposition.handler.ServerChannelInitializer; |
|
|
|
import io.netty.bootstrap.ServerBootstrap; |
|
|
|
import io.netty.channel.ChannelFuture; |
|
|
@@ -12,15 +13,6 @@ import io.netty.channel.EventLoopGroup; |
|
|
|
import io.netty.channel.nio.NioEventLoopGroup; |
|
|
|
import io.netty.channel.socket.nio.NioServerSocketChannel; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.yaml.snakeyaml.Yaml; |
|
|
|
|
|
|
|
import java.io.ByteArrayInputStream; |
|
|
|
import java.net.Inet4Address; |
|
|
|
import java.net.InetAddress; |
|
|
|
import java.net.InetSocketAddress; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Properties; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* @program: DipperPositionServer |
|
|
@@ -37,132 +29,137 @@ public class DipperPositionServer { |
|
|
|
private Integer posAsycPort; |
|
|
|
private Integer starsAsycPort; |
|
|
|
|
|
|
|
public DipperPositionServer() throws NacosException { |
|
|
|
//String serverAddr = positionConfigInfo.getServerAddr(); |
|
|
|
try { |
|
|
|
try { |
|
|
|
InetAddress ip4 = Inet4Address.getLocalHost(); |
|
|
|
serverAddr = ip4.getHostAddress(); |
|
|
|
} catch (Exception ex) { |
|
|
|
serverAddr = "172.16.192.26"; |
|
|
|
ex.printStackTrace(); |
|
|
|
} |
|
|
|
String dataId = "dipperposition-service"; |
|
|
|
String group = "DEFAULT_GROUP"; |
|
|
|
Properties properties = new Properties(); |
|
|
|
properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr); |
|
|
|
ConfigService configService = NacosFactory.createConfigService(properties); |
|
|
|
String content = configService.getConfig(dataId, group, 5000); |
|
|
|
|
|
|
|
ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(content.getBytes()); |
|
|
|
Yaml yaml = new Yaml(); |
|
|
|
Map m1 = yaml.load(tInputStringStream); |
|
|
|
Map m2 = (Map) m1.get("position-server"); |
|
|
|
this.serverAddr = (String)m2.get("serverAddr"); |
|
|
|
this.timeAsycPort = (Integer)m2.get("timeAsycPort"); |
|
|
|
this.posAsycPort = (Integer)m2.get("posAsycPort"); |
|
|
|
this.starsAsycPort = (Integer)m2.get("starsAsycPort"); |
|
|
|
//log.info("Map server is:" + m2.get("serverAddr")); |
|
|
|
} catch (Exception ex) { |
|
|
|
ex.printStackTrace(); |
|
|
|
} |
|
|
|
//log.info("Config serverAddr is " + serverAddr); |
|
|
|
} |
|
|
|
/* |
|
|
|
* 时间同步进程线程 |
|
|
|
*/ |
|
|
|
public void startTimeAsnc() { |
|
|
|
public DipperPositionServer(PositionConfigInfo pci) throws NacosException { |
|
|
|
|
|
|
|
//new 一个主线程组 |
|
|
|
EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); |
|
|
|
//new 一个工作线程组 |
|
|
|
EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); |
|
|
|
InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, |
|
|
|
timeAsycPort); |
|
|
|
ServerBootstrap bootstrap = new ServerBootstrap() |
|
|
|
.group(mainThreadGroup, workThreadGroup) |
|
|
|
.channel(NioServerSocketChannel.class) |
|
|
|
.childHandler(new ServerChannelInitializer()) |
|
|
|
.localAddress(socketAddress) |
|
|
|
//设置队列大小 |
|
|
|
.option(ChannelOption.SO_BACKLOG, 1024) |
|
|
|
// 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 |
|
|
|
.childOption(ChannelOption.SO_KEEPALIVE, true); |
|
|
|
|
|
|
|
|
|
|
|
//绑定端口,开始接收进来的连接 |
|
|
|
try { |
|
|
|
ChannelFuture future = bootstrap.bind(socketAddress).sync(); |
|
|
|
log.info("服务器启动开始监听端口: {}", socketAddress.getPort()); |
|
|
|
|
|
|
|
|
|
|
|
future.channel().closeFuture().sync(); |
|
|
|
} catch (InterruptedException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} finally { |
|
|
|
//关闭主线程组 |
|
|
|
mainThreadGroup.shutdownGracefully(); |
|
|
|
//关闭工作线程组 |
|
|
|
workThreadGroup.shutdownGracefully(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* 时间同步进程线程 |
|
|
|
*/ |
|
|
|
public void startPosAsnc() { |
|
|
|
|
|
|
|
//new 一个主线程组 |
|
|
|
EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); |
|
|
|
//new 一个工作线程组 |
|
|
|
EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); |
|
|
|
InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, |
|
|
|
posAsycPort); |
|
|
|
ServerBootstrap bootstrap = new ServerBootstrap() |
|
|
|
.group(mainThreadGroup, workThreadGroup) |
|
|
|
.channel(NioServerSocketChannel.class) |
|
|
|
.childHandler(new ServerChannelInitializer()) |
|
|
|
.localAddress(socketAddress) |
|
|
|
//设置队列大小 |
|
|
|
.option(ChannelOption.SO_BACKLOG, 1024) |
|
|
|
// 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 |
|
|
|
.childOption(ChannelOption.SO_KEEPALIVE, true); |
|
|
|
|
|
|
|
|
|
|
|
//绑定端口,开始接收进来的连接 |
|
|
|
try { |
|
|
|
ChannelFuture future = bootstrap.bind(socketAddress).sync(); |
|
|
|
log.info("服务器启动开始监听端口: {}", socketAddress.getPort()); |
|
|
|
|
|
|
|
|
|
|
|
future.channel().closeFuture().sync(); |
|
|
|
} catch (InterruptedException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} finally { |
|
|
|
//关闭主线程组 |
|
|
|
mainThreadGroup.shutdownGracefully(); |
|
|
|
//关闭工作线程组 |
|
|
|
workThreadGroup.shutdownGracefully(); |
|
|
|
} |
|
|
|
this.serverAddr = pci.getServerAddr(); |
|
|
|
this.timeAsycPort = Integer.parseInt(pci.getTimeAsycPort()); |
|
|
|
this.posAsycPort = Integer.parseInt(pci.getPosAsycPort()); |
|
|
|
this.starsAsycPort = Integer.parseInt(pci.getStarsAsycPort()); |
|
|
|
//String serverAddr = positionConfigInfo.getServerAddr(); |
|
|
|
// try { |
|
|
|
// try { |
|
|
|
// InetAddress ip4 = Inet4Address.getLocalHost(); |
|
|
|
// serverAddr = ip4.getHostAddress(); |
|
|
|
// } catch (Exception ex) { |
|
|
|
// serverAddr = "172.16.192.26"; |
|
|
|
// ex.printStackTrace(); |
|
|
|
// } |
|
|
|
// String dataId = "dipperposition-service"; |
|
|
|
// String group = "DEFAULT_GROUP"; |
|
|
|
// Properties properties = new Properties(); |
|
|
|
// properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr); |
|
|
|
// ConfigService configService = NacosFactory.createConfigService(properties); |
|
|
|
// String content = configService.getConfig(dataId, group, 5000); |
|
|
|
// |
|
|
|
// ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(content.getBytes()); |
|
|
|
// Yaml yaml = new Yaml(); |
|
|
|
// Map m1 = yaml.load(tInputStringStream); |
|
|
|
// Map m2 = (Map) m1.get("position-server"); |
|
|
|
// this.serverAddr = (String)m2.get("serverAddr"); |
|
|
|
// this.timeAsycPort = (Integer)m2.get("timeAsycPort"); |
|
|
|
// this.posAsycPort = (Integer)m2.get("posAsycPort"); |
|
|
|
// this.starsAsycPort = (Integer)m2.get("starsAsycPort"); |
|
|
|
// log.info("Map server is:" + m2.get("serverAddr")); |
|
|
|
// } catch (Exception ex) { |
|
|
|
// ex.printStackTrace(); |
|
|
|
// } |
|
|
|
} |
|
|
|
// /* |
|
|
|
// * 时间同步进程线程 |
|
|
|
// */ |
|
|
|
// public void startTimeAsnc() { |
|
|
|
// |
|
|
|
// //new 一个主线程组 |
|
|
|
// EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); |
|
|
|
// //new 一个工作线程组 |
|
|
|
// EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); |
|
|
|
// InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, |
|
|
|
// timeAsycPort); |
|
|
|
// ServerBootstrap bootstrap = new ServerBootstrap() |
|
|
|
// .group(mainThreadGroup, workThreadGroup) |
|
|
|
// .channel(NioServerSocketChannel.class) |
|
|
|
// .childHandler(new ServerChannelInitializer()) |
|
|
|
// .localAddress(socketAddress) |
|
|
|
// //设置队列大小 |
|
|
|
// .option(ChannelOption.SO_BACKLOG, 1024) |
|
|
|
// // 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 |
|
|
|
// .childOption(ChannelOption.SO_KEEPALIVE, true); |
|
|
|
// |
|
|
|
// |
|
|
|
// //绑定端口,开始接收进来的连接 |
|
|
|
// try { |
|
|
|
// ChannelFuture future = bootstrap.bind(socketAddress).sync(); |
|
|
|
// log.info("服务器启动开始监听端口: {}", socketAddress.getPort()); |
|
|
|
// |
|
|
|
// |
|
|
|
// future.channel().closeFuture().sync(); |
|
|
|
// } catch (InterruptedException e) { |
|
|
|
// e.printStackTrace(); |
|
|
|
// } finally { |
|
|
|
// //关闭主线程组 |
|
|
|
// mainThreadGroup.shutdownGracefully(); |
|
|
|
// //关闭工作线程组 |
|
|
|
// workThreadGroup.shutdownGracefully(); |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
// /* |
|
|
|
// * 时间同步进程线程 |
|
|
|
// */ |
|
|
|
// public void startPosAsnc() { |
|
|
|
// |
|
|
|
// //new 一个主线程组 |
|
|
|
// EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); |
|
|
|
// //new 一个工作线程组 |
|
|
|
// EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); |
|
|
|
// InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, |
|
|
|
// posAsycPort); |
|
|
|
// ServerBootstrap bootstrap = new ServerBootstrap() |
|
|
|
// .group(mainThreadGroup, workThreadGroup) |
|
|
|
// .channel(NioServerSocketChannel.class) |
|
|
|
// .childHandler(new ServerChannelInitializer()) |
|
|
|
// .localAddress(socketAddress) |
|
|
|
// //设置队列大小 |
|
|
|
// .option(ChannelOption.SO_BACKLOG, 1024) |
|
|
|
// // 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 |
|
|
|
// .childOption(ChannelOption.SO_KEEPALIVE, true); |
|
|
|
// |
|
|
|
// |
|
|
|
// //绑定端口,开始接收进来的连接 |
|
|
|
// try { |
|
|
|
// ChannelFuture future = bootstrap.bind(socketAddress).sync(); |
|
|
|
// log.info("服务器启动开始监听端口: {}", socketAddress.getPort()); |
|
|
|
// |
|
|
|
// |
|
|
|
// future.channel().closeFuture().sync(); |
|
|
|
// } catch (InterruptedException e) { |
|
|
|
// e.printStackTrace(); |
|
|
|
// } finally { |
|
|
|
// //关闭主线程组 |
|
|
|
// mainThreadGroup.shutdownGracefully(); |
|
|
|
// //关闭工作线程组 |
|
|
|
// workThreadGroup.shutdownGracefully(); |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* 星历同步进程线程 |
|
|
|
*/ |
|
|
|
public void startStarsAsnc() { |
|
|
|
//public void startStarsAsnc() { |
|
|
|
public void start() { |
|
|
|
|
|
|
|
//new 一个主线程组 |
|
|
|
EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); |
|
|
|
//new 一个工作线程组 |
|
|
|
EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); |
|
|
|
InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, |
|
|
|
starsAsycPort); |
|
|
|
//InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, |
|
|
|
// starsAsycPort); |
|
|
|
ServerBootstrap bootstrap = new ServerBootstrap() |
|
|
|
.group(mainThreadGroup, workThreadGroup) |
|
|
|
.channel(NioServerSocketChannel.class) |
|
|
|
.childHandler(new ServerChannelInitializer()) |
|
|
|
.localAddress(socketAddress) |
|
|
|
//.localAddress(socketAddress) |
|
|
|
//设置队列大小 |
|
|
|
.option(ChannelOption.SO_BACKLOG, 1024) |
|
|
|
// 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 |
|
|
@@ -171,11 +168,38 @@ public class DipperPositionServer { |
|
|
|
|
|
|
|
//绑定端口,开始接收进来的连接 |
|
|
|
try { |
|
|
|
ChannelFuture future = bootstrap.bind(socketAddress).sync(); |
|
|
|
log.info("服务器启动开始监听端口: {}", socketAddress.getPort()); |
|
|
|
|
|
|
|
|
|
|
|
future.channel().closeFuture().sync(); |
|
|
|
ChannelFuture channelFuture = bootstrap.bind(timeAsycPort).sync(); |
|
|
|
log.info("时间辅助服务器启动开始监听端口: {}", timeAsycPort); |
|
|
|
channelFuture.addListener(future -> { |
|
|
|
if (future.isSuccess()){ |
|
|
|
System.out.println("start success"); |
|
|
|
}else{ |
|
|
|
System.out.println("start failed"); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
ChannelFuture channelFuture2 = bootstrap.bind(posAsycPort).sync(); |
|
|
|
log.info("位置服务器启动开始监听端口: {}", posAsycPort); |
|
|
|
channelFuture2.addListener(future -> { |
|
|
|
if (future.isSuccess()){ |
|
|
|
System.out.println("start success"); |
|
|
|
}else{ |
|
|
|
System.out.println("start failed"); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
ChannelFuture channelFuture3 = bootstrap.bind(starsAsycPort).sync(); |
|
|
|
log.info("星历服务器启动开始监听端口: {}", starsAsycPort); |
|
|
|
channelFuture3.addListener(future -> { |
|
|
|
if (future.isSuccess()){ |
|
|
|
System.out.println("start success"); |
|
|
|
}else{ |
|
|
|
System.out.println("start failed"); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
//channelFuture.channel().closeFuture().sync(); |
|
|
|
} catch (InterruptedException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} finally { |
|
|
|