Netty 从3.5移到新版本

Netty 从3.5移到新版本,netty,Netty,我正在评估新的Netty 4.0,并试图了解从3.5升级到新版本需要做些什么。 我有两个问题要问,关于内蒂4.0.0的波特 在Netty 4.0.0中,messageReceived方法替换为inboundBufferUpdated方法。 用户将一条或多条消息排入入站(或出站)缓冲区,并触发inboundBufferUpdated(或flush)事件。 这种方法意味着在处理程序在用户线程中执行的情况下同步入站(或出站)缓冲区。 您是否可以建议不使用同步对象发送装入(或出站)消息的另一种方法,例如

我正在评估新的Netty 4.0,并试图了解从3.5升级到新版本需要做些什么。 我有两个问题要问,关于内蒂4.0.0的波特

  • 在Netty 4.0.0中,messageReceived方法替换为inboundBufferUpdated方法。 用户将一条或多条消息排入入站(或出站)缓冲区,并触发inboundBufferUpdated(或flush)事件。
    这种方法意味着在处理程序在用户线程中执行的情况下同步入站(或出站)缓冲区。 您是否可以建议不使用同步对象发送装入(或出站)消息的另一种方法,例如在Netty 3.5中,使用messageReceived方法

  • 在Netty 3.5中,我们使用SimpleChannelHandler,它为这两种事件类型提供方法。如何在Netty 4.0.0中使用相同的方法


  • 读。。。它应该能回答你所有的问题,并提供更多关于变化的想法。

    阅读。。。它将回答您的所有问题,并提供有关更改的更多想法。

    谢谢您的回答。我花了很多时间处理这个文档,并看到了一些示例,但这些问题仍然不清楚。若我有多个添加到管道的处理程序,在FireInboundBufferUpdate事件发生后,将调用第一个处理程序的InboundBufferUpdate方法。public void InboundBufferUpdate(ChannelHandlerContext ctx){If(ctx.hasInboundByteBuffer(){ByteBuff in_buf=ctx.inboundByteBuffer();Queue out=ctx.nextinboundMessageBuffer();…out.add(new MyMsg(in_buf));}else{Queue in=ctx.inboundMessageBuffer();Queue out=ctx.nextinboundMessageBuffer();for(;){MyMyMsg msg=in.poll();if(buf==null)break;…out.add(msg);}}ctx.fireInboundBufferUpdated();}所有队列操作(轮询、添加)都是同步的,可能会影响系统性能。您能否建议另一种方式通过fire InboundBufferUpdated事件将消息传递给下一个处理程序?谢谢您的回答。我花了很多时间处理这个文档,并看到了一些示例,但这些问题仍然不清楚。若我有多个添加到管道的处理程序,在FireInboundBufferUpdate事件发生后,将调用第一个处理程序的InboundBufferUpdate方法。public void InboundBufferUpdate(ChannelHandlerContext ctx){If(ctx.hasInboundByteBuffer(){ByteBuff in_buf=ctx.inboundByteBuffer();Queue out=ctx.nextinboundMessageBuffer();…out.add(new MyMsg(in_buf));}else{Queue in=ctx.inboundMessageBuffer();Queue out=ctx.nextinboundMessageBuffer();for(;){MyMyMsg msg=in.poll();if(buf==null)break;…out.add(msg);}}ctx.fireInboundBufferUpdated();}所有队列操作(轮询、添加)都是同步的,可能会影响系统性能。您能否建议另一种方法,通过fire InboundBufferUpdated事件将消息传递给下一个处理程序?