首页 > 其他分享 >Netty @Sharable

Netty @Sharable

时间:2023-12-21 14:11:25浏览次数:17  
标签:Netty Sharable ChannelHandler Override handler sc NettyHandler

标有@Sharable的Handler,代表了他是一个可以被分享的handler,这就是说服务器注册了这个handler后,可以分享给多个客户端使用,如果没有使用该注解,则每次客户端请求时,都必须重新创建一个handler。

ex

  private NettyHandler nettyHandler = new NettyHandler();
    

  @Override
  protected void initChannel(SocketChannel sc) throws Exception {
    
    sc.pipeline().addLast(nettyHandler);
}

解决

  @Override    
 protected void initChannel(SocketChannel sc) throws Exception {
    
      sc.pipeline().addLast(new NettyHandler());
    
  }
@Sharable
public class NettyHandler extends SimpleChannelInboundHandler {}

正常情况下同一个ChannelHandler,的不同的实例会被添加到不同的Channel管理的管线里面的,但是如果你需要全局统计一些信息,比如所有连接报错次数(exceptionCaught)等,这时候你可能需要使用单例的ChannelHandler,需要注意的是这时候ChannelHandler上需要添加@Sharable注解。

https://blog.csdn.net/supper10090/article/details/78431948  源码解读参考

 

标签:Netty,Sharable,ChannelHandler,Override,handler,sc,NettyHandler
From: https://www.cnblogs.com/shanheyongmu/p/17918863.html

相关文章

  • Netty使用CompletableFuture实现异步串行队列
    一、前言CompletableFuture是JDK1.8提供的一种更加强大的异步编程的api。它实现了Future接口,也就是Future的功能特性CompletableFuture也有。它也实现了CompletionStage接口,CompletionStage接口定义了任务编排的方法,执行某一阶段,可以向下执行后续阶段。CompletableFuture相比于Futu......
  • 记录一次在k8s上,web服务内嵌的netty-socketio注册到nacos,gateway转发路由 遇到的问题
    web服务内嵌的nacos怎么注册?使用javasdk方式参考链接:https://nacos.io/zh-cn/docs/sdk.html每个socket不同怎么设置端口我这里使用的是注解,让用户传过来,并且在bean初始化之前进行变量存储。这个链接里面的[netty-socketio服务端代码编写目录]:https://www.cnblogs.com/x......
  • Seata 启动报错:[imeoutChecker_1] i.s.c.r.netty.NettyClientChannelManager : no av
    Seata启动报错:[imeoutChecker_1]i.s.c.r.netty.NettyClientChannelManager:noavailableservertoconnect.1.问题2.解决【application.xml和file.conf参数要相对应】......
  • netty源码:(1)NioEventLoopGroup
    EventLoopGroupbossGroup=newNioEventLoopGroup();不加参数创建NioEventLoopGroup的话,会使用cpu核数*2作为bossGroup的线程数。......
  • Netty-在NIO基础上的优化
    零拷贝零拷贝指的是,应用程序在需要把内核中的一块区域数据转移到另外一块内核区域去时,不需要经过先复制到用户空间,再转移到目标内核区域去了,而直接实现转移。在网络通信上,使用直接内存。Netty接收和发送ByteBuf采用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次......
  • Netty04-优化与源码
    优化与源码分析1.优化1.1扩展序列化算法序列化,反序列化主要用在消息正文的转换上序列化时,需要将Java对象变为要传输的数据(可以是byte[],或json等,最终都需要变成byte[])反序列化时,需要将传入的正文数据还原成Java对象,便于处理目前的代码仅支持Java自带的序列化,反......
  • Netty IO 和 Thrift IO
    1.NettyIONetty是一个高性能的异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它极大地简化了网络编程,如TCP和UDP套接字服务器。异步和事件驱动:Netty基于事件驱动模型,可以处理成千上万个并发连接。高性能:优化的传输尝试减少资源消耗和延迟。......
  • 基于DotNetty实现自动发布 - 实现一键打包发布
    前言上一篇,我只实现了一键检测代码变化,本篇才是真正的实现了一键打包发布效果图客户端打包待发布文件///<summary>///把多个文件添加到压缩包(保留文件夹层级关系)///</summary>publicstaticasyncTask<ZipFileResult>CreateZipAsync(IEnumera......
  • Netty源码学习8——从ThreadLocal到FastThreadLocal(如何让FastThreadLocal内存泄漏do
    系列文章目录和关于我一丶引入在前面的netty源码学习中经常看到FastThreadLocal的身影,这一篇我们将从ThreadLocal说起,来学习FastThreadLocal的设计(《ThreadLocal源码学习笔记》)二丶从ThreadLocal说起ThreadLocal是JDK中实现线程隔离的一个工具类。实现线程隔离maybe你第一反应......
  • Netty内置的http报文解码流程
    netty解码netty通过内置处理器HttpRequestDecoder和HttpObjectAggregator对Http请求报文进行解码之后,Netty会将Http请求封装成一个FullHttpRequest实例,然后发送给下一站。Netty内置的与Http请求报文相对应的类大致有如下几个:(1)FullHttpRequest:包含整个Http请求的信息,包含对Htt......