Java 出站消息的净管道顺序

Java 出站消息的净管道顺序,java,netty,Java,Netty,我正在使用Netty v4.1.9final,并试图将消息从客户端发送到服务器。我尝试在客户端使用处理程序设置通道客户端初始值设定项,如下所示: final Bootstrap bootstrap = BootstrapGenerator.generate(); bootstrap.handler(new XmlClientInitializer()); XMLClientInitializer public class XmlClientInitializer extends Chann

我正在使用Netty v4.1.9final,并试图将消息从客户端发送到服务器。我尝试在客户端使用处理程序设置通道客户端初始值设定项,如下所示:

final Bootstrap bootstrap = BootstrapGenerator.generate();
bootstrap.handler(new XmlClientInitializer());  
XMLClientInitializer

public class XmlClientInitializer extends ChannelInitializer<SocketChannel> {

    @Override
    public void initChannel(SocketChannel ch) throws Exception {
        final ChannelPipeline pipeline = ch.pipeline();

        pipeline.addLast("fileEncoder", new FileEncoder());
        pipeline.addLast("handler", new XmlSenderHandler());
    }
}
public class FileEncoder extends MessageToByteEncoder<String> {
public class XmlSenderHandler extends ChannelOutboundHandlerAdapter {

    private static final Logger log = LogManager.getLogger(XmlSenderHandler.class.getName());
    private static ChannelHandlerContext ctx;

    @Override
    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
        log.info("attempting to write messages to server {}", msg.toString());
        ctx.write(msg, promise);
    }

    @Override
    @SuppressWarnings("FutureReturnValueIgnored")
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        super.exceptionCaught(ctx, cause);
    }
}

尽管FileEncoder是在管道中首先定义的,但它会在xml处理程序之后被调用(这不是我想要的)。这是因为FileEncoder正在将MessageToByteEncoder扩展,还是我配置的通道不正确?

否,管道配置正确。关键是入站事件从第一个处理程序处理到最后一个处理程序,出站事件从最后一个处理程序处理到第一个处理程序。

否,管道配置正确。关键是入站事件从第一个处理程序处理到最后一个处理程序,出站事件从最后一个处理程序处理到第一个处理程序。