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

时间:2018-03-05 07:33:10

标签: java multithreading netty

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

以下是实施步骤和问题:

  1. Netty服务器处理程序从客户端
  2. 接收消息
  3. 因为还有其他正在运行的线程来处理用户数据,我们需要将此请求放入队列并让工作进程处理
  4. 我们需要在服务器和客户端之间使用相同的连接进行多次消息交换
  5. 每当消息准备好从工作线程发送到客户端时,最好使用HashMap中缓存的通道

    final ChannelFuture status = channel.writeAndFlush(Unpooled.copiedBuffer(payload.getBytes()));

  6. 每当工作线程想要关闭与客户端的连接时,如果我们关闭缓存的通道,这是否足够?

  7. 请参阅此Netty - can I cache those ChannelHandlerContext in Hash map and response it later?

    上面是关于使用ChannelHandlerContext,但我的是关于频道。使用ChannelHandlerContext和Channel

    也有任何优势

    谢谢大家

1 个答案:

答案 0 :(得分:0)

是的,您可以缓存Channel并稍后再使用它。如果您需要的是writeAndFlush()稍后来自另一个线程的消息,则只需缓存Channel即可。

当您想要动态修改管道,在管道中上下触发事件等时,

ChannelHandlerContext非常有用。如果您不需要这些,可以使用Channel