package com.ruoyi.dataInterchange.netty.server;
|
|
import io.netty.bootstrap.ServerBootstrap;
|
import io.netty.channel.ChannelOption;
|
import io.netty.channel.nio.NioEventLoopGroup;
|
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
|
/**
|
* @author zhibing.pu
|
* @Date 2025/3/3 19:24
|
*/
|
@Configuration
|
public class NettyConfig {
|
/**
|
* 用户线程数
|
*/
|
private Integer bossThread = 5;
|
/**
|
* 工作线程数
|
*/
|
private int workThread = 10;
|
/**
|
* 心跳
|
*/
|
private Boolean keepAlive = true;
|
|
@Autowired
|
private NettyInitalizer nettyInitalizer;
|
|
@Bean(name = "bossGroup", destroyMethod = "shutdownGracefully")
|
public NioEventLoopGroup bossGroup() {
|
return new NioEventLoopGroup(bossThread);
|
}
|
|
@Bean(name = "workerGroup", destroyMethod = "shutdownGracefully")
|
public NioEventLoopGroup workerGroup() {
|
return new NioEventLoopGroup(workThread);
|
}
|
|
// 定义
|
@Bean(name = "serverBootstrap")
|
public ServerBootstrap bootstrap(){
|
ServerBootstrap bootstrap = new ServerBootstrap();
|
bootstrap.group(bossGroup(), workerGroup())
|
.channel(NioServerSocketChannel.class)
|
.childHandler(nettyInitalizer);
|
bootstrap.option(ChannelOption.SO_KEEPALIVE, keepAlive); // 是否使用TCP的心跳机制
|
bootstrap.option(ChannelOption.SO_BACKLOG, 1024); // backLog的队列大小
|
// 通过TCP_NODELAY禁用NAGLE,使消息立即发出去,不用等待到一定的数据量才发出去
|
bootstrap.option(ChannelOption.TCP_NODELAY, true);
|
return bootstrap;
|
}
|
}
|