首先是一张对MemoryChannel源码分析后画出的一张图:
MemoryChannel类中有个内部类,MemoryTransaction。
它们的继承结构如下:
0. MemoryChannel中的queue是真正存放内存通道event的队列。
1. batchSize是针对Source和Sink提出的一个概念,它用来限制source和sink对event批量处理的。
即一次性你可以处理batchSize个event,这个一次性就是指在一个事务中。
当你处理的event数量超出了batchSize,那么事务就会提交了。batchSize一定不能大于transactionCapacity。
2. transactionCapacity则是putList和takeList的容量。这里维护了三个LinkedBlockingDeque队列。