kafka9使用demo
新的Comsumer API不再有high-level、low-level之分了,而是自己维护offset。这样做的好处是避免应用出现异常时,数据未消费成功,但Position已经提交,导致消息未消费的情况发生。通过查看API,新的Comsumer API有以下功能:
- Kafka可以自行维护Offset、消费者的Position。也可以开发者自己来维护Offset,实现相关的业务需求。
- 消费时,可以只消费指定的Partitions
- 可以使用外部存储记录Offset,如数据库之类的。
- 自行控制Consumer消费消息的位置。
- 可以使用多线程进行消费
以上来自网络。
我个人觉得kafka9与kafka8相比,能够同时消费多个topic的数据;不用再指定zookeeper的地址,只需要指定kafka的broker的地址即可;内部多线程消费kafka消息......
消费者demo:
ConsumerLoop.java
package com.kafka9.consumer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.errors.WakeupException;
/**
* @author 作者:
* @date 创建时间: 2017年3月20日 下午2:36:20
* @version 版本: 1.0
*/
public class ConsumerLoop implements Runnable {
private static final String topicKey = "topics";
private static final String autoCommitKey = "enable.auto.commit";
private final KafkaConsumer<String, String> consumer;
private final List<