假如我们的底层使用Netty作为网络通信框架,业务流程在将业务数据发送到对端之前,实际先要将数据发送到Netty的缓冲区中,然后再从Netty的缓冲区发送到TCP的缓冲区,最后再到对端....它的大体流程就是向Netty缓冲区写入数据的时候,会判断写入的数据总量是否超过了设置的高水位值,如果超过了就设置通道(Channel)不可写状态....当Netty缓冲区中的数据写入到TCP缓冲区之后,Netty缓冲区的数据量变少,当低于低水位值的时候,就设置通过(Channel)可写状态....promise);
}
// 代码位置: io.netty.channel.ChannelOutboundBuffer#addMessage
public void addMessage(Object...RocketMQ底层使用Netty进行网络通信,我们看下RocketMQ是如何利用通道是否可写的.
// 代码位置: org.apache.rocketmq.broker.client.ProducerManager