Netty - 我可以在哈希映射中缓存那些 ChannelHandlerContext 并稍后响应吗?

Netty - can I cache those ChannelHandlerContext in Hash map and response it later?

下面是实现步骤和问题:

  1. Netty 服务器处理程序从客户端接收消息

  2. 因为还有其他运行线程处理用户数据,我们需要把这个请求放到一个队列中,让worker处理

  3. worker处理完数据后,是否可以在worker线程中响应给client?即使用 HashMap 来缓存 ChannelHandlerContext 并稍后从工作线程获取它以响应?

谢谢大家

是的,你可以。 ChannelHandlerContext提供的操作都是线程安全的,因此您可以保留上下文实例以备后用,并在其他线程中使用。

一个ChannelHandlerContext与其所属的Channel具有相同的生命周期。当 Channel 关闭时,ChannelHandlerContext 也会从管道中取消引用。如果保留对 ChannelHandlerContext 的引用,则应取消引用它或确保垃圾收集器可以回收它。