文章目录
什么是消息累加器RecordAccumulator
消息缓存模型
ProducerBatch的内存大小
内存分配
Batch的创建和释放
1. 内存16K 缓存池中有可用内存
2....发送消息的时候, 当Broker挂掉了,消息体还能写入到消息缓存中吗?
当消息还存储在缓存中的时候, 假如Producer客户端挂掉了,消息是不是就丢失了?...而缓存这个消息的就是RecordAccumulator类.
上图就是整个消息存放的缓存模型,我们接下来一个个来讲解。...消息缓存模型
上图表示的就是 消息缓存的模型, 生产的消息就是暂时存放在这个里面。
每条消息,我们按照TopicPartition维度,把他们放在不同的Deque 队列里面。...注意:这里我们涉及到的 非缓存池中的内存分配, 仅仅指的的内存数字的增加和减少。
问题和答案
发送消息的时候, 当Broker挂掉了,消息体还能写入到消息缓存中吗?