zoukankan      html  css  js  c++  java
  • 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();
    
  • 相关阅读:
    递归算法转换为非递归算法的技巧
    22. 平面列表
    14. 二分查找
    那点人生小智慧
    9. Fizz Buzz 问题
    8. 旋转字符串
    6. 合并排序数组:
    归并排序
    远方的她
    微服务体系下如何快速构建一个服务
  • 原文地址:https://www.cnblogs.com/xinxiucan/p/8041458.html
Copyright © 2011-2022 走看看