kafka-network层 send类源码解读
- 概述
send类:实现将消息(byte),通过channel发送到目标broker集群。
主要的类:接口send类,实现类ByteBufferSend implements Send ,继承类NetworkSend extends ByteBufferSend。
主要关联类:channel类。 - 源码分析
send接口类:
public interface Send {
String destination();
boolean completed();
long writeTo(GatheringByteChannel channel) throws IOException;
long size();
}
destination()–发送的目标集群地址。
completed()–判断是否完成发送。
writeTo(GatheringByteChannel channel)–将字节流写入到channel中。这里channel是生产者端-broker端的链路。将在channle篇章中分析。
size()—用来计算的buffer的字节大小。为什么需要计算发送字节大小,在继承类中NetworkSend中会解释下kafka消息体设计模式。
实现类ByteBufferSend
首先看构造方法:
public ByteBufferSend(String destination, ByteBuffer... buffers) {
this.destination = destination;
this.buffers = b