我一直在查看来自Netty website的代理服务器示例:
示例源代码处理程序具有volatile变量
private volatile Channel outboundChannel;
负责连接到另一台服务器以进行代理的通道。
这让我想知道这是否是为代理的多个连接实现的正确和安全的方法。
我想允许多个连接(入站)连接到不同的outbounds,同时确保每个入站连接都唯一地链接到出站通道。
据我所知,Netty为每个连接生成一个新的管道。这是否意味着管道工厂新生成的处理程序专用于新连接(通道)?
P.S。如果我有与我的Netty服务器的1,000个活动连接,这是否意味着有1,000个不同的管道?
答案 0 :(得分:9)
每个连接创建一个管道,但管道可能包含共享和独占处理程序。一些处理程序不保持状态,并且可以将单个实例插入多个[所有]管道中。 Netty提供的可以共享的处理程序使用ChannelHandler.Sharable进行注释。请参阅此tutorial中标题为共享和独占渠道处理程序的部分。