使用Netty,我正在增强一个通过VLI读取XML的TcpIp服务器。服务器使用VLI来确定数据包的边界。然后它按以下方式将数据包转换为xml doc。
pipeline.addLast("VLI codec", new CombinedChannelDuplexHandler<>(new LengthFieldBasedFrameDecoder(8192, 0, 2, 0, 2), new LengthFieldPrepender(2, false)));
pipeline.addLast("XML codec", byteToDocumentCodec);
然后进一步处理处理程序。
这项运作良好但不够好。使用单个线程,请求必须等待彼此处理。显然,必须在第二个 pipeline.addLast 中引入 EventLoopExecutor 参数。
问题是哪个是合适的。我正在考虑
pipeline.addLast(new LocalEventLoopGroup(), "XML codec", byteToDocumentCodec);
或者像
这样的东西pipeline.addLast(new DefaultEventExecutorGroup(8), "XML codec", byteToDocumentCodec);
答案 0 :(得分:1)
如果您不想在I / O线程中执行此操作,则DefaultEventExecutorGroup是正确的。这就是说你想为不同的ChannelPipelines共享相同的实例。