从DefaultPartitioner的评论中我们知道,Kafka producers按照以下规则选择分区,而RoundRobinPartitioner则以循环方式选择。但这只是关于多个消息的发送,如果生产者重试被启用,后续的重试发送是否会按照下面的规则发送,还是在同一个分区上继续重试?
/**默认分区策略: * 如果在记录中指定了分区,则使用它 * 如果未指定分区但存在键,则根据键的散列选择分区 * 如果不存在分区或键,则以循环方式选择分区 */
谢谢~
从DefaultPartitioner的评论中我们知道,Kafka producers按照以下规则选择分区,而RoundRobinPartitioner则以循环方式选择。但这只是关于多个消息的发送,如果生产者重试被启用,后续的重试发送是否会按照下面的规则发送,还是在同一个分区上继续重试?
/**默认分区策略: * 如果在记录中指定了分区,则使用它 * 如果未指定分区但存在键,则根据键的散列选择分区 * 如果不存在分区或键,则以循环方式选择分区 */
谢谢~
1条答案
按热度按时间u4vypkhs1#
1.根据分区策略,消息被分区到不同的分区缓冲区(生产者客户端)。
1.当分区(例如,分区0)缓冲区已满时,缓冲区中的消息被发送到Kafka代理。如果失败,则将再次发送缓冲区。它将不会重复步骤1,因为第已经决定了。
分区和传递(重试)是隔离的。