`

netty之AttributeKey的应用

 
阅读更多

 



1)AttributeMap这是是绑定在Channel或者ChannelHandlerContext上的一个附件,相当于依附在这两个对象上的寄生虫一样,相当于附件一样,如图所示:

这个图还算比较形象地描述了AttributeMap的作用,我们知道每一个ChannelHandlerContext都是ChannelHandler和ChannelPipeline之间连接的桥梁,每一个ChannelHandlerContext都有属于自己的上下文,也就说每一个ChannelHandlerContext上如果有AttributeMap都是绑定上下文的,也就说如果A的ChannelHandlerContext中的AttributeMap,B的ChannelHandlerContext是无法读取到的

 

但是Channel上的AttributeMap就是大家共享的,每一个ChannelHandler都能获取到

 

我们再看看AttributeMap的结构:

可以看出这个是线程安全的,所以我们可以放心使用,再看看AttributeMap的结构,其实和Map的格式很像,key是AttributeKey,value是Attribute,我们可以根据AttributeKey找到对应的Attribute,并且我们可以指定Attribute的类型T:

   下面截取了两种AttributeKey的用法的部分代码.

 

       private AttributeKey<String> key = AttributeKey.valueOf("Id");
       @Override
	public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
		
		Attribute<String> channelAttr = ctx.channel().attr(key);
		Attribute<String> contextAttr = ctx.attr(key);
                //基于channel的属性
		if(channelAttr.get() == null){
			channelAttr.set("1");
		}else{
			System.out.println("channel key :"+channelAttr.get());
		}
                //基于context的属性
		if(contextAttr.get() == null){
			contextAttr.set("1");
		}else{
			System.out.println("contextAttr key :"+contextAttr.get());
		}
		
		ByteBuf buf = (ByteBuf) msg;
		byte[] req  = new byte[buf.readableBytes()];
		buf.readBytes(req);
		String body = new String(req,"UTF-8").substring(0, 
				req.length-System.getProperty("line.separator").length());
		System.out.println("server channelRead...; received:" + body + ";the counter is" + counter++);
		String currentTime = "QUERY TIME ORDDER".equalsIgnoreCase(body)
				?new Date(System.currentTimeMillis()).toString():"BAD ORDER";
		ByteBuf  resp = Unpooled.copiedBuffer(currentTime.getBytes());
		ctx.writeAndFlush(resp);
		
	}

 

 

分享到:
评论

相关推荐

    Netty进阶之路-跟着案例学Netty

    《Netty进阶之路-跟着案例学Netty》是由知名技术专家李林峰撰写的一本专为Java开发者深入理解Netty框架而准备的书籍。这本书旨在通过实例教学,帮助读者全面掌握Netty的核心特性和实战技巧,提升网络编程的能力。 ...

    netty(Java网络应用框架)v4.1.9官方免费版

    它的本质是为了简化高性能网络应用程序的开发,它可以快速轻松地开发诸如协议服务器和客户端之类的网络应用程序。Netty极大地简化了网络编程流程,如TCP和UDP套接字服务器,它常用于游戏、大数据、企业软件、通信等...

    《Netty进阶之路 跟着案例学Netty》.rar

    Java进阶技术-netty进阶之路

    Netty源码剖析与应用

    Netty源码剖析与应用

    netty中的多线程应用

    在 Netty 中,多线程的应用是其处理高并发、高性能的关键因素之一。下面我们将深入探讨 Netty 中的多线程并发应用。 1. **线程模型** Netty 采用了 Boss-Worker 线程模型,它由两部分组成:Boss 线程和 Worker ...

    使用netty快速开发web应用.zip

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨如何利用 Netty 快速开发 Web 应用,以及它在企业级应用中的重要性。 一、Netty ...

    《Netty进阶之路 跟着案例学Netty》_李林锋_

    Netty进阶之路 跟着案例学Netty 整本书无密码,Netty进阶之路 跟着案例学Netty

    Netty全套学习资源(包括源码、笔记、学习文档等)

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它是 Java 平台上的一个开源项目,广泛应用于分布式系统、云计算平台、游戏服务器、聊天应用以及大数据传输等...

    Netty进阶之路:跟着案例学Netty 完整版.pdf

    《Netty进阶之路:跟着案例学Netty》中的案例涵盖了Netty的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty...

    NettyAndroid,Netty在Android中的使用

    Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端:https://azhon.blog.csdn.net/article/details/100569489 Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的...

    跟闪电侠学Netty:Netty即时聊天实战与底层原理-book-netty.zip

    《跟闪电侠学Netty:Netty即时聊天实战与底层原理》是一本深入浅出的Netty技术指南,旨在帮助读者掌握Netty框架,并利用它实现即时聊天应用,同时理解其底层工作原理。Netty是Java领域的一款高性能、异步事件驱动的...

    用netty实现文件传输

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨如何利用 Netty 4.0.23 版本来实现文件的传输,这包括客户端和服务器端的交互过程。...

    Netty原理与应用

    ### Netty原理与应用 #### 一、Netty概述及应用场景 Netty是一个高性能、轻量级的开源网络通信框架,它支持多种协议,如TCP、UDP、HTTP等,并且可以用于开发高度定制化的网络应用。Netty采用了异步、事件驱动的...

    Netty实战.epub_netty实战epub_netty实战epub_netty_

    《Netty实战》这本书是针对Java网络编程框架Netty的一本深入实践教程,旨在帮助读者掌握Netty的核心特性和实际应用。Netty是一款高性能、异步事件驱动的网络应用程序框架,广泛应用于各种分布式系统、微服务架构以及...

    netty之hello world

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨Netty的基本概念,通过“Hello World”范例来理解其工作原理。 首先,让我们理解...

    netty应用于物联网或者IM项目

    Netty在物联网(IoT)和即时通讯(IM)项目中的应用主要体现在其高效、灵活的网络通信框架特性上。SpringBoot与MQTT 3.1.1的结合,为服务器端开发提供了便利,而Netty作为底层通信库,极大地提升了系统性能。 首先...

    java应用netty服务端和客户端

    Java应用程序中的Netty框架是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty广泛应用于分布式系统、云计算、大数据处理等领域,它的核心特性包括非阻塞I/O、...

    Netty应用中文详解

    Netty应用中文详解

Global site tag (gtag.js) - Google Analytics