网络频道和多线程

时间:2017-08-07 23:08:43

标签: java netty

我正在尝试使用netty编写一个小型Java客户端,以通过tcp连接传输日志消息。我对netty很新,所以我想知道一些事情

我会让多个队列消费者阅读消息并发送日志;是否可以使用一个频道,或每个队列消费者一个频道?处理程序是无状态的,并且所有数据都被发送到同一个端点 - 根据我的理解,一个通道应该是线程安全的,多个通道可以提供更好的性能?

提前致谢!

3 个答案:

答案 0 :(得分:2)

请参阅:https://stackoverflow.com/a/28019260/3755871

多个通道允许使用更多处理器核心,因此在您拥有的通道数量超过核心数量之前,可以获得更高的性能。是的,单个通道是线程安全的。

然后,根据您的流量,您可能甚至没有注意到差异。

答案 1 :(得分:1)

需要考虑几个因素,例如服务的队列数,消息的总预期吞吐量以及消息的大小。您可以考虑使用 ChannelPool 以获得最佳性能。

答案 2 :(得分:0)

最后,我将两种方法结合起来 - 一个FixedChannelPool设置为可用处理器的数量(使用NettyUtils帮助程序类发现),到目前为止似乎运行良好!