使用Netty,我正在增强一个通过VLI读取XML的TcpIp服务器。服务器使用VLI确定数据包的边界。然后,它通过以下方式将数据包转换为xml文档。

pipeline.addLast("VLI codec", new CombinedChannelDuplexHandler<>(new LengthFieldBasedFrameDecoder(8192, 0, 2, 0, 2), new LengthFieldPrepender(2, false)));
pipeline.addLast("XML codec", byteToDocumentCodec);


其次是进一步的处理程序。

这很好,但还不够好。使用单个线程,请求必须彼此等待处理。显然,必须将EventLoopExecutor参数引入第二个pipeline.addLast。

问题是哪个合适。我正在考虑

pipeline.addLast(new LocalEventLoopGroup(), "XML codec", byteToDocumentCodec);


或者,例如

pipeline.addLast(new DefaultEventExecutorGroup(8), "XML codec", byteToDocumentCodec);

最佳答案

如果不想在I / O线程中使用DefaultEventExecutorGroup,则它是正确的选择。也就是说,您想为不同的ChannelPipelines共享同一实例。

08-04 20:19