您的位置:首页 > 其它

kafka异步发送数据,不阻塞

2017-08-21 09:25 281 查看
kafka生产者默认是回执机制的,即必须确认服务端(server)处理过数据之后才能算是发送完成。虽然生产者会使用线程池处理这些业务,但如果kafka的服务端挂掉生产者也会进行阻塞。

kafka日志收集上线之前,测试的时候就发生过关掉kafka服务端后页面访问非常缓慢,结果找到原因是因为如果kafka生产者没连接到服务端就会进行6秒的阻塞。这对需要嵌入到各个子系统的分布式应用来说存在很大的隐患。

可以通过设置配置选项让kafka生产者不进行阻塞

max.block.ms 控制block的时长,当buffer空间不够或者metadata丢失时产生阻塞(block) 默认时长6000毫秒

props.put(“max.block.ms”, “0”);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: