已在Netty 4.0.0.CR9中删除了Channel.id()。
这些天如何获得频道的ID?
我曾经在我的所有处理程序中使用id()进行日志记录(例如System.out.println(ctx.channel()。id()+“ - readableBytes():”+ in.readableBytes()) )。
我不能依赖Channel的toString方法,因为它可能会被覆盖。
答案 0 :(得分:10)
如果您确定该频道处于有效状态,则可以通过合并hashCode()
,remoteAddress()
和localAddress()
来生成频道的唯一ID。或者,您只需使用Channel.toString()
生成三个属性中的字符串即可。如果频道尚未有效,则remoteAddress()
和localAddress()
将无法提供有意义的信息,因此您仍有可能发生冲突。
Netty 4.1和5.0重新引入Channel.id()
,它返回一个名为ChannelId
的新类型。它使用各种信息,如MAC地址,当前PID,时间戳和哈希码,因此它甚至可以用作全局唯一ID。查看Javadoc。
答案 1 :(得分:1)
您可以使用Channel.hashCode()。我们删除了id(),因为它不能保证100%唯一。