Springboot集成netty,通过udp协议传输xml报文(自己把坑踩了一遍)

更新时间:2023-06-21 02:36:31 阅读: 评论:0

Springboot集成netty,通过udp协议传输xml报⽂(⾃⼰把坑踩了⼀遍)Springboot集成netty,通过udp协议传输xml报⽂
发掘人才需要考试1.添加maven依赖
<dependency>
<groupId>ioty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.18.Final</version>
</dependency>
udp接收端代码
@Component
public class UdpEventServer implements Runnable {
private Logger log = Logger(UdpEventServer.class);
private int port;
private Service 参数1,2;
public UdpEventServer() {
}
public UdpEventServer(Param1, Param2, int rverPort) {
Service =usability;
江苏旅游攻略Service =event;
port =rverPort;
}
你不在的时候
//@Async//注意这⾥,组件启动时会执⾏run,这个注解是让线程异步执⾏,这样不影响主线程@Override
public void run() {
start();
}
/**
* @return void
* @Author lqw
* @Description : 数据接收线程 ,udp上传数据的接收,数据处理handler
**/
public void start() {
try {
**//TCP需要创建两个线程组,UDP⼀个就够了**
private  EventLoopGroup group = new NioEventLoopGroup(10);
/程普
/创建NioDatagramChannel
Bootstrap bootstrap = new Bootstrap();
.channel(NioDatagramChannel.class)
.option(ChannelOption.SO_BROADCAST, true)//⽀持⼴播
.option(ChannelOption.SO_REUSEADDR, true) //端⼝复⽤
.handler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new 粘包handler);
pipeline.addLast
(new ⾃定义Handler(param1, param2));
}
});
ChannelFuture future = bootstrap.bind(port).sync();
future.channel().cloFuture().sync();
索玛花是什么花
} catch (InterruptedException e) {
e.printStackTrace();
<("执⾏udp接收服务出错" + e.getMessage());
}
}
`## ⾃定义监听器,springboot启动后启动netty
**因为异步启动netty,多线程情况下⽆法直接注⼊spring管理的实例,所以将bean以参数的形式注⼊**
```java
@Component
public class NettyServerListener  implements ApplicationListener<ContextRefreshedEvent> {
private static final Logger logger = Logger(NettyServerListener.class);
//配置⽂件设置端⼝号
@Value("${UdpServer.Port}")
private int rverPort;
@Autowired
private 需要注⼊的rvice Param1;
@Autowired
食品安全追溯
private 需要注⼊的rvice Param2;
/**
祝妈妈长命百岁* 当⼀个applicationContext被初始化或被刷新时触发
* @param event
*/
必读小说@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
// ApplicationContext().getParent() == null){
UdpEventServer nettyServer=new UdpEventServer(Param1, Param2,rverPort);
new Thread(nettyServer).start();
logger.info("开始启动netty,port:"+rverPort);
}
}

本文发布于:2023-06-21 02:36:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1002789.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:启动   接收   线程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图