@@ -1,28 +1,17 @@ | |||||
package com.telpo.dipperposition; | package com.telpo.dipperposition; | ||||
import com.alibaba.nacos.api.NacosFactory; | |||||
import com.alibaba.nacos.api.config.ConfigService; | |||||
import com.alibaba.nacos.api.config.listener.Listener; | |||||
import com.alibaba.nacos.api.PropertyKeyConst; | |||||
import com.alibaba.nacos.api.exception.NacosException; | |||||
import com.telpo.dipperposition.co.PositionConfigInfo; | |||||
import com.telpo.dipperposition.server.DipperPositionServer; | import com.telpo.dipperposition.server.DipperPositionServer; | ||||
import com.telpo.dipperposition.server.EphAsyncServer; | |||||
import com.telpo.dipperposition.server.TimeAsyncServer; | import com.telpo.dipperposition.server.TimeAsyncServer; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.boot.SpringApplication; | import org.springframework.boot.SpringApplication; | ||||
import org.springframework.boot.autoconfigure.SpringBootApplication; | import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
import org.springframework.boot.context.properties.ConfigurationPropertiesScan; | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; | ||||
import org.springframework.boot.context.properties.EnableConfigurationProperties; | |||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; | ||||
import org.springframework.context.ConfigurableApplicationContext; | import org.springframework.context.ConfigurableApplicationContext; | ||||
import org.springframework.core.env.ConfigurableEnvironment; | import org.springframework.core.env.ConfigurableEnvironment; | ||||
import org.springframework.scheduling.annotation.EnableAsync; | import org.springframework.scheduling.annotation.EnableAsync; | ||||
import org.springframework.scheduling.annotation.EnableScheduling; | import org.springframework.scheduling.annotation.EnableScheduling; | ||||
import java.util.Properties; | |||||
import java.util.concurrent.Executor; | |||||
/** | /** | ||||
* @program: gateway | * @program: gateway | ||||
* @description: 网关启动类 | * @description: 网关启动类 | ||||
@@ -44,6 +33,8 @@ public class DipperPositionApplication { | |||||
log.info("北斗定位服务启动!"); | log.info("北斗定位服务启动!"); | ||||
//启动服务端 | //启动服务端 | ||||
ConfigurableEnvironment environment = applicationContext.getEnvironment(); | ConfigurableEnvironment environment = applicationContext.getEnvironment(); | ||||
TimeAsyncServer timeAsyncServer = new TimeAsyncServer(environment); | |||||
timeAsyncServer.start(); | |||||
DipperPositionServer nettyServer = new DipperPositionServer(environment); | DipperPositionServer nettyServer = new DipperPositionServer(environment); | ||||
nettyServer.start(); | nettyServer.start(); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
@@ -124,8 +124,6 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { | |||||
// if (Integer.parseInt(posAsycServerPort) == channel.localAddress().getPort()) { | // if (Integer.parseInt(posAsycServerPort) == channel.localAddress().getPort()) { | ||||
//if (AST_POS_CMD.equals(recvmg)) { | //if (AST_POS_CMD.equals(recvmg)) { | ||||
log.info("config info is : " + positionConfig.getCenterProvinceFilePath() + positionConfig.getCenterProvince() + positionConfig.getIpPositionRequestPath() + | |||||
positionConfig.getIpPositionRequestKey()); | |||||
if (AST_POS_CMD.equals(msg)) { | if (AST_POS_CMD.equals(msg)) { | ||||
// channelAns = dipperAstPosAsyncTaskService.pushAstPos(ipAddress, | // channelAns = dipperAstPosAsyncTaskService.pushAstPos(ipAddress, | ||||
// positionConfig.getCenterProvinceFilePath(), | // positionConfig.getCenterProvinceFilePath(), | ||||
@@ -69,101 +69,22 @@ public class DipperPositionServer { | |||||
// ex.printStackTrace(); | // 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 start() { | public void start() { | ||||
//new 一个主线程组 | //new 一个主线程组 | ||||
EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); | EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); | ||||
//new 一个工作线程组 | //new 一个工作线程组 | ||||
EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); | EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); | ||||
InetSocketAddress socketAddress = new InetSocketAddress(serverAddr,9011); | |||||
//InetSocketAddress socketAddress = new InetSocketAddress(serverAddr,9011); | |||||
ServerBootstrap bootstrap = new ServerBootstrap() | ServerBootstrap bootstrap = new ServerBootstrap() | ||||
.group(mainThreadGroup, workThreadGroup) | .group(mainThreadGroup, workThreadGroup) | ||||
.channel(NioServerSocketChannel.class) | .channel(NioServerSocketChannel.class) | ||||
.childHandler(new ServerChannelInitializer()) | .childHandler(new ServerChannelInitializer()) | ||||
.localAddress(socketAddress) | |||||
// .localAddress(socketAddress) | |||||
//设置队列大小 | //设置队列大小 | ||||
.option(ChannelOption.SO_BACKLOG, 1024) | .option(ChannelOption.SO_BACKLOG, 1024) | ||||
// 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 | // 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 | ||||
@@ -172,28 +93,28 @@ public class DipperPositionServer { | |||||
//绑定端口,开始接收进来的连接 | //绑定端口,开始接收进来的连接 | ||||
try { | try { | ||||
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.channel().closeFuture().sync(); | |||||
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"); | |||||
} | |||||
}); | |||||
channelFuture2.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.channel().closeFuture().sync(); | |||||
// | |||||
// 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"); | |||||
// } | |||||
// }); | |||||
// channelFuture2.channel().closeFuture().sync(); | |||||
// | |||||
ChannelFuture channelFuture3 = bootstrap.bind(starsAsycPort).sync(); | ChannelFuture channelFuture3 = bootstrap.bind(starsAsycPort).sync(); | ||||
log.info("星历服务器启动开始监听端口: {}", starsAsycPort); | log.info("星历服务器启动开始监听端口: {}", starsAsycPort); | ||||
@@ -1,106 +0,0 @@ | |||||
package com.telpo.dipperposition.server; | |||||
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.handler.ServerChannelInitializer; | |||||
import io.netty.bootstrap.ServerBootstrap; | |||||
import io.netty.channel.ChannelFuture; | |||||
import io.netty.channel.ChannelOption; | |||||
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 | |||||
* @description: 北斗定位 | |||||
* @author: king | |||||
* @create: 2021-01-13 14:01 | |||||
*/ | |||||
@Slf4j | |||||
public class EphAsyncServer { | |||||
// @Autowired PositionConfigInfo positionConfigInfo; | |||||
private String serverAddr; | |||||
private Integer starsAsycPort; | |||||
public EphAsyncServer() 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.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 startStarsAsnc() { | |||||
//new 一个主线程组 | |||||
EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); | |||||
//new 一个工作线程组 | |||||
EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); | |||||
InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, | |||||
starsAsycPort); | |||||
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(); | |||||
} | |||||
} | |||||
} |
@@ -1,8 +1,5 @@ | |||||
package com.telpo.dipperposition.server; | package com.telpo.dipperposition.server; | ||||
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.alibaba.nacos.api.exception.NacosException; | ||||
import com.telpo.dipperposition.handler.ServerChannelInitializer; | import com.telpo.dipperposition.handler.ServerChannelInitializer; | ||||
import io.netty.bootstrap.ServerBootstrap; | import io.netty.bootstrap.ServerBootstrap; | ||||
@@ -12,18 +9,12 @@ import io.netty.channel.EventLoopGroup; | |||||
import io.netty.channel.nio.NioEventLoopGroup; | import io.netty.channel.nio.NioEventLoopGroup; | ||||
import io.netty.channel.socket.nio.NioServerSocketChannel; | import io.netty.channel.socket.nio.NioServerSocketChannel; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.yaml.snakeyaml.Yaml; | |||||
import org.springframework.core.env.ConfigurableEnvironment; | |||||
import java.io.ByteArrayInputStream; | |||||
import java.net.Inet4Address; | |||||
import java.net.InetAddress; | |||||
import java.net.InetSocketAddress; | import java.net.InetSocketAddress; | ||||
import java.util.Map; | |||||
import java.util.Properties; | |||||
/** | /** | ||||
* @program: DipperPositionServer | |||||
* @program: TimeAsyncServer | |||||
* @description: 北斗定位 | * @description: 北斗定位 | ||||
* @author: king | * @author: king | ||||
* @create: 2021-01-13 14:01 | * @create: 2021-01-13 14:01 | ||||
@@ -33,53 +24,32 @@ public class TimeAsyncServer { | |||||
// @Autowired PositionConfigInfo positionConfigInfo; | // @Autowired PositionConfigInfo positionConfigInfo; | ||||
private String serverAddr; | private String serverAddr; | ||||
private Integer serverPort; | |||||
private Integer timeAsycPort; | private Integer timeAsycPort; | ||||
private Integer posAsycPort; | |||||
private Integer starsAsycPort; | |||||
public TimeAsyncServer() 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); | |||||
public TimeAsyncServer(ConfigurableEnvironment environment) throws NacosException { | |||||
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"); | |||||
//log.info("Map server is:" + m2.get("serverAddr")); | |||||
} catch (Exception ex) { | |||||
ex.printStackTrace(); | |||||
} | |||||
//log.info("Config serverAddr is " + serverAddr); | |||||
this.serverAddr = environment.getProperty("position-server.serverAddr"); | |||||
this.serverPort = Integer.parseInt(environment.getProperty("server.port")); | |||||
this.timeAsycPort = Integer.parseInt(environment.getProperty("position-server.timeAsycPort")); | |||||
this.posAsycPort = Integer.parseInt(environment.getProperty("position-server.posAsycPort")); | |||||
this.starsAsycPort = Integer.parseInt(environment.getProperty("position-server.starsAsycPort")); | |||||
} | } | ||||
/* | |||||
* 时间同步进程线程 | |||||
*/ | |||||
public void startTimeAsnc() { | |||||
public void start() { | |||||
//new 一个主线程组 | //new 一个主线程组 | ||||
EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); | EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1); | ||||
//new 一个工作线程组 | //new 一个工作线程组 | ||||
EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); | EventLoopGroup workThreadGroup = new NioEventLoopGroup(200); | ||||
InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, | |||||
timeAsycPort); | |||||
//InetSocketAddress socketAddress = new InetSocketAddress(serverAddr,null); | |||||
ServerBootstrap bootstrap = new ServerBootstrap() | ServerBootstrap bootstrap = new ServerBootstrap() | ||||
.group(mainThreadGroup, workThreadGroup) | .group(mainThreadGroup, workThreadGroup) | ||||
.channel(NioServerSocketChannel.class) | .channel(NioServerSocketChannel.class) | ||||
.childHandler(new ServerChannelInitializer()) | .childHandler(new ServerChannelInitializer()) | ||||
.localAddress(socketAddress) | |||||
//.localAddress(socketAddress) | |||||
//设置队列大小 | //设置队列大小 | ||||
.option(ChannelOption.SO_BACKLOG, 1024) | .option(ChannelOption.SO_BACKLOG, 1024) | ||||
// 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 | // 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文 | ||||
@@ -88,11 +58,17 @@ public class TimeAsyncServer { | |||||
//绑定端口,开始接收进来的连接 | //绑定端口,开始接收进来的连接 | ||||
try { | try { | ||||
ChannelFuture future = bootstrap.bind(socketAddress).sync(); | |||||
log.info("服务器启动开始监听端口: {}", socketAddress.getPort()); | |||||
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"); | |||||
} | |||||
}); | |||||
future.channel().closeFuture().sync(); | |||||
channelFuture.channel().closeFuture().sync(); | |||||
} catch (InterruptedException e) { | } catch (InterruptedException e) { | ||||
e.printStackTrace(); | e.printStackTrace(); | ||||
} finally { | } finally { | ||||
@@ -102,5 +78,4 @@ public class TimeAsyncServer { | |||||
workThreadGroup.shutdownGracefully(); | workThreadGroup.shutdownGracefully(); | ||||
} | } | ||||
} | } | ||||
} | } |