1、什么是netty
Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。
基于 I/O 复用模型
2、Springboot整合Netty
① 导入依赖
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.50.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
② Application启动类时启动Netty
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.web(WebApplicationType.SERVLET)
.run(args);
NettyServer nettyServer = new NettyServer();
nettyServer.start();
}
}
③ 创建服务启动监听器NettyServer
/**
* 服务启动监听器
*/
@Slf4j
public class NettyServer {
@Value("${keystore.server.path}")
private String SERVER_PATH;
@Value("${keystore.server.password}")
private String SERVER_PASSWORD;
@Value("${keystore.ca-trust.path}")
private String CA_TRUST_PATH;
@Value("${keystore.ca-trust.password}")
private String CA_TRUST_PASSWORD;
/**
* 启动netty
*/
public void start() {
EventLoopGroup rootGroup = new NioEventLoopGroup();
EventLoopGroup workGroup = new NioEventLoopGroup();
try {
//创建密钥管理器工厂
KeyManagerFactory kmf = SSLUtil.getKeyManagerFactory("D:\\jm\\keystore\\xx.keystore", "xxx");
//创建信任管理器工厂
TrustManagerFactory tmf = SSLUtil.getTrustManagerFactory("D:\\jm\\keystore\\xx.keystore", "xxx");
SslContext sslCtx = SslContextBuilder.forServer(kmf).trustManager(tmf).build();
ServerBootstrap sb = new ServerBootstrap();
sb.group(rootGroup, workGroup)
.channel(NioServerSocketChannel.