Kafka批量处理是否兼容阻塞式发送?调用send后立即get会阻断批量吗?
Kafka 批量处理与阻塞发送相关问题解答
1. Kafka的批量处理功能是否可与阻塞式发送配合使用?
可以配合使用。Kafka Producer的批量处理由batch.size(批次大小阈值)、linger.ms(等待攒批的最长时间)等参数控制,只要这些配置生效,即便采用阻塞式发送(通过Future.get()等待结果),Producer依然会先完成攒批逻辑,满足批量条件后再发送消息,只是发送完成后才会解除阻塞返回结果。
2. 调用producer.send()后立即执行future.get(),是否会阻断消息的批量处理?
会阻断。producer.send()本身是异步操作,只是把消息放入本地缓存批次;但future.get()会阻塞当前线程,等待这条消息的发送结果返回。这会导致后续的消息无法被添加到当前批次中,Producer只能优先发送当前这条消息,无法触发攒批逻辑,相当于退化为同步单条发送,批量处理机制也就无法生效。
内容的提问来源于stack exchange,提问作者Vishal Makwana
相关产品推荐
相关产品推荐

