首页 > 编程知识 正文

netty client 主动断开连接

时间:2023-05-03 22:20:11 阅读:257516 作者:3114

最近遇到一个关于netty的问题,先来看问题

使用netty发送消息,功能正常,但是每次发送会有类似如下警告信息

警告: The pipeline contains no upstream handlers; discarding: [id: 0x00807c88] OPEN

2015-9-6 15:39:12 org.jboss.netty.channel.DefaultChannelPipeline

警告: The pipeline contains no upstream handlers; discarding: [id: 0x00807c88, /10.100.17.38:64293 => /10.101.22.108:40018] BOUND: /10.100.17.38:64293

2015-9-6 15:39:12 org.jboss.netty.channel.DefaultChannelPipeline

警告: The pipeline contains no upstream handlers; discarding: [id: 0x00807c88, /10.100.17.38:64293 => /10.101.22.108:40018] CONNECTED: /10.101.22.108:40018

2015-9-6 15:39:12 org.jboss.netty.channel.DefaultChannelPipeline

警告: The pipeline contains no upstream handlers; discarding: [id: 0x00807c88, /10.100.17.38:64293 => /10.101.22.108:40018] WRITTEN_AMOUNT: 365

2015-9-6 15:40:41 org.jboss.netty.channel.DefaultChannelPipeline

警告: The pipeline contains no upstream handlers; discarding: [id: 0x00807c88, /10.100.17.38:64293 => /10.101.22.108:40018] WRITTEN_AMOUNT: 364

虽然不影响功能,但是会造成大量的日志,按照公司的业务量,一天差不多3个G,运维要打人了。。

 

从错误信息看,是说发送之前,缺少upstreamHandler,因为是直接发送,所以没有添加handler,但是这个警告有点儿太恶心人了。。

为了不让他警告,只能做如下处理,在bootsrap进行connect之前,设置一个handler进去

bootstrap.setPipeline(Channels.pipeline(new ChannelUpstreamHandler(){

@Override

public void handleUpstream(ChannelHandlerContext ctx,

ChannelEvent e) throws Exception {

//DO NOTHING,防止警告,增加系统日志负担

}

 

}));

我是为了不让他警告,有需求的同学可以自行替换handler,只要有类似这么个handler,就不会有警告;

 

问题解决,没有贴出全部代码,不过应该解释清楚了,不清楚的,可以联系我

虽然解决了问题,但是感觉应该还有别的解决方式,之前考虑的思路是通过修改log4j的配置文件来达到不输出警告的目的,这个警告是netty内部的,调用的logger.warn,感觉应该是可以通过这种方式实现的,但是始终没有尝试成功,要是哪位勤奋的皮皮虾解决了,请赐教

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。