我们在使用Netty进行客户端开发的时候,有时候需要获取handler返回的消息,所以就需要对Channel进行数据绑定,因为Netty线程模型的特性,我们每个线程可以处理多个channel,我们是实际业务当中呢也都是使用的ChannelPool,所以呢就可能多个业务线程使用的都是一个Channel进行数据发送及数据返回,这样呢我们就需要做一项非常重要的工作,那就是区分返回的消息应该对应到哪个线程,因为不管我们怎么写我们都会通过一个Channel所以我们可以在Channel中进行参数传递。
AttributeKey<String> key = AttributeKey.valueOf("RequestId");
ctx.channel().attr(key).set("客户端处理完毕");
AttributeKey<String> key = AttributeKey.valueOf("RequestId");
Object result = future.channel().attr(key).get();
通过为每个请求设置一个参数即可以对数据进行绑定。