【问题标题】:move to the new version from 3.5从 3.5 迁移到新版本
【发布时间】:2012-08-16 07:12:12
【问题描述】:

我正在评估新的 Netty 4.0,并尝试了解从 3.5 迁移到新版本需要做什么。 我有几个关于 potring 到 Netty 4.0.0 的问题

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

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

【问题讨论】:

    标签: netty


    【解决方案1】:

    阅读this...它应该回答您所有的问题,并提供有关更改的更多想法..

    【讨论】:

    • 感谢您的回答。我花了很多时间处理这个文档并查看了示例,但仍然不清楚这些问题。如果我有多个处理程序被添加到管道中,在 fireInboundBufferUpdated 事件发生后,第一个处理程序的 inboundBufferUpdated 方法将被调用。
    • public void inboundBufferUpdated(ChannelHandlerContext ctx) { if (ctx.hasInboundByteBuffer()) { ByteBuf in_buf = ctx.inboundByteBuffer();队列 out = ctx.nextinboundMessageBuffer(); ... out.add(new MyMsg(in_buf)); }else{ 队列 in = ctx.inboundMessageBuffer();队列 out = ctx.nextinboundMessageBuffer(); for (;;) { MyMyMsg msg = in.poll(); if (buf == null) 中断; ... out.add(msg); } } ctx.fireInboundBufferUpdated (); }
    • 所有队列操作(poll、add)都是同步的,可能会影响系统的性能。您能否建议另一种通过触发 InboundBufferUpdated 事件将消息传递给下一个处理程序的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多