因为我正在使用netty来进行聊天应用。因为我有netty服务器集群。
因为我在Redis中存储所有客户端的通道ID,以引用连接到netty服务器的所有通道。
我想将所有Channel对象存储到Redis,以便从任何节点或实例我可以获得所有客户端Channel对象,因为如果我想获取其他客户端的节点在其他节点上创建的Channel,如何获取这些客户端驻留在其他节点或实例上的Channel对象?
因此最好将客户端Channel对象存储到redis,因此从任何节点都可以获得任何客户端Channel对象。但是Channel实现类在netty中不是Serializable。
感谢。
答案 0 :(得分:0)
Netty中的频道包含所有网络方面(套接字,nio支持,tcp或udp或...),因此您无法对其进行序列化(网络连接无法序列化)。
但您可以序列化远程地址。但请注意,“id”不可配置,这意味着您无法强制将其值用于一个通道。所以你可以使用类似的东西:
在Redis中:(你的id是关键)
在您的JVM(节点)中:(映射您的id是密钥的地方)
答案 1 :(得分:0)
不,您可以在 Redis 以外的 Map 中存储或持久化 Netty 通道。因为通道对象是不可序列化的。