如何获取Netty频道的ID?

时间:2013-08-15 22:27:06

标签: netty

已在Netty 4.0.0.CR9中删除了Channel.id()。

这些天如何获得频道的ID?

我曾经在我的所有处理程序中使用id()进行日志记录(例如System.out.println(ctx.channel()。id()+“ - readableBytes():”+ in.readableBytes()) )。

我不能依赖Channel的toString方法,因为它可能会被覆盖。

2 个答案:

答案 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%唯一。