为了账号安全,请及时绑定邮箱和手机立即绑定

kafka-0.9消费者新API

标签:
大数据

kafka-0.9消费者新API


注:以下仅限kafka版本0.9以上Consumer新版api

Consumer自动提交示例:

Properties props = new Properties();
props.put("bootstrap.servers", kafkaBrokerURL);
props.put("group.id", groupId);
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "30000");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("auto.offset.reset", "earliest");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList(topic));while (true) {
    ConsumerRecords<String, String> records = consumer.poll(100);    for (ConsumerRecord<String, String> record : records) {
        LOGGER.info(record.key() + "," + record.value());
    }
}

在0.9版本消费者新API中,有3种ack策略

1.自动提交

就是上面示例中的,程序只要获取到消息就会提交offset,不管你的方法有没有执行完。同时消费速度是最快的

props.put("enable.auto.commit", "true");props.put("auto.commit.interval.ms", "1000");

2.手动提交

手动提交就是在你的方法执行完后手动调用consumer.commitSync();手动同步ack。每处理完1条消息,commitSync 1次
速度慢,测试手动commit耗时在0.1秒左右

props.put("enable.auto.commit", "false");// 执行完方法后调用consumer.commitSync();

3. 手动异步提交

手动异步提交跟手动提交方式一样,只是加了异步,速度会有所提升

props.put("enable.auto.commit", "false");// 执行完方法后调用consumer.commitAsync();



作者:全能程序猿
链接:https://www.jianshu.com/p/9f44f13e94e7


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消