2

我正在尝试使用 netty 4.x 实现异步 redis 客户端。在阅读了 netty 源代码和文档之后,使用我在 ServerBootstrap 中用作 childEventLoop 的相同 NioEventLoop[s] 似乎更有效。问题是我似乎需要在RedisClientPool每个. 我试图扩展并覆盖 newChild 以返回一个带有字段的自定义(只是复制了代码,因为它被声明为 final),这样我就可以通过它共享一些对象。NioChildEventLoopAttributeMapNioEventLoopNioChildEventLoopAttributeMap

public class NioChildEventLoopWithAttributeMap extends SingleThreadEventLoop {

    private AttributeMap map = new DefaultAttributeMap();

    public <T> Attribute<T> attr(AttributeKey<T> key) {
        return map.attr(key);
    }

    //.... omit the copied codes
}

public class CustomNioEventLoop extends NioEventLoop {
    public EventExecutor newChild() {
        return new NioChildEventLoopWithAttributeMap();
    }
}

但在AbstractChannel它检查 EventLoop

protected boolean isCompatible(EventLoop loop) {
    return loop instanceof NioChildEventLoop;
}

我现在不知道该怎么办,有什么建议吗?对不起我糟糕的英语。

4

1 回答 1

1

只是为了记录,github上有一个用于netty4和netty3的redis-codec:

https://github.com/spullara/redis-protocol

于 2012-10-09T06:45:25.940 回答