使用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共享同一实例。