我可以从HashMap中的ChannelHandlerContext缓存频道吗?

问题描述 投票:0回答:1

如果我缓存Channel [ctx.channel()]而不是缓存ChannelHandlerContext会不会有任何区别?

以下是实施步骤和问题:

  1. Netty服务器处理程序从客户端接收消息
  2. 因为还有其他正在运行的线程来处理用户数据,所以我们需要将此请求放入队列并让工作进程处理
  3. 我们需要在服务器和客户端之间使用相同的连接进行多个消息交换
  4. 每当消息准备好从工作线程发送到客户端时,最好使用HashMap中缓存的通道 final ChannelFuture status = channel.writeAndFlush(Unpooled.copiedBuffer(payload.getBytes()));
  5. 每当工作线程想要关闭与客户端的连接时,如果我们关闭缓存的通道,这是否足够?

看到这个Netty - can I cache those ChannelHandlerContext in Hash map and response it later?

上面是关于使用ChannelHandlerContext,但我的是关于频道。使用ChannelHandlerContext和Channel也有任何优势

谢谢你们

java multithreading netty
1个回答
0
投票

是的,你可以缓存一个Channel并在以后使用它。如果您需要的是writeAndFlush()以后来自另一个线程的消息,那么只需缓存Channel就可以了。

当您想要动态修改管道,在管道上上下触发事件等时,ChannelHandlerContext非常有用。如果您不需要这些,您可以使用Channel

© www.soinside.com 2019 - 2024. All rights reserved.