多个通道可以使用同一个 LengthFieldBasedFrameDecoder 实例吗?

Can the same LengthFieldBasedFrameDecoder instance be used by multiple channels?

我正在使用 Netty 处理其消息在 header 中具有可变长度字段的协议。 LengthFieldBasedFrameDecoder 被证明是满足这一要求的完美选择。

鉴于这对于每个通道都是完全相同的(内容的实际处理是由管道中的后续处理程序完成的)使用此 class 的单例而不是创建一个线程是否安全每个频道一个新的?

如果帧变得碎片化,需要重新组装,它是否为每个 Channel 保留单独的 ByteBuf 实例,或者是否存在数据损坏的风险?

谢谢

不需要,您需要为每个频道创建一个新实例。可以被多个通道使用的所有处理程序标记为 @Sharable.