要创建一个Kafka消费者,需要使用java.util.Properties并定义一些我们传递给KafkaConsumer构造函数的属性。 在上面的代码中,KafkaConsumerExample.createConsumer 将BOOTSTRAP_SERVERS_CONFIG(即"bootstrap.servers")属性设置为我们之前定义的Kafka broker地址列表。BOOTSTRAP_SERVERS_CONFIG值是一个用逗号分隔的主机/端口对列表...
import org.apache.kafka.clients.consumer.KafkaConsumer;publicclassConsumerTest {publicstaticvoidmain(String[] args) {//System.setProperty("java.security.auth.login.config", "/home/kafka/kafka_client_jaas.conf");//System.setProperty("java.security.krb5.conf", "/home/kafka/krb5.conf");//环境变量...
Kafka核心API Kafka有4个核心API 应用程序使用Producer API发布消息到1个或多个Topics中; 应用程序使用ConsumerAPI来订阅1个或多个Topics,并处理产生的消息; 应用程序使用Streams API充当一个流处理器,从1个或多个Topics消费输入流,并产生一个输出流到1个或多个Topics,有效地将输入流转换到输出流; Connector API允...
Kafka的API有Producer API,Consumer API还有自定义Interceptor (自定义拦截器),以及处理的流使用的Streams API和构建连接器的Kafka Connect API。 Producer API Kafka的Producer发送消息采用的是异步发送的方式。在消息发送过程中,涉及两个线程:main线程和Sender线程,以及一个线程共享变量RecordAccumulator。main线程将消息发送...
Lower Level Consumer API:通过直接操作底层API获取数据的方式获取Kafka中的数据,需要自行给定分区、偏移量等属性。优点:可操作性强;缺点:代码相对而言比较复杂。(入口类:SimpleConsumer) 这里主要将Lower Level Consumer API使用Java代码实现并测试: Hight Level Consumer API详见博客:[Kafka] - Kafka Java Consumer实现...
为了实现多并发消费,我们可以使用 Java 的线程池来创建多个消费者实例。 importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;publicclassMultiThreadedConsumer{publicstaticvoidmain(String[]args){intnumConsumers=5;// 设置消费者数量ExecutorServiceexecutor=Executors.newFixedThreadPool(numConsume...
Consumer API的配置参数也很多,常见的包括: bootstrap.servers:Kafka集群的地址列表。 group.id:消费者所属的消费组ID。 key.deserializer和value.deserializer:用于将字节数组反序列化为键和值的类。 enable.auto.commit:是否自动提交偏移量,默认为true。
./kafka-consumer-groups.sh --bootstrap-server hadoop01:9092 --describe --group my_group 1.偏移量-自动提交 运行上面的程序输出结果: 使用如下命令查看offset提交后当前位置 比较上面两张图,最后一次消费的OFFSET=216493,下一个要消费的OFFSET=216494 ...
我们知道,数据在kafka中是可以持久化的,因此consumer消费数据的可靠性是不用担心的,也就是说不用担心数据的丢失问题,数据的消费是可控的。 疑问:那它是怎么控制的呢? 我们假设consumer在消费过程中出现了断电宕机等故障,然后它恢复后,需要从故障前的位置继续消费,所以consumer需要实时记录自己消费到了哪个offset,以便故...
Kafka Java Consumer采用的是单线程的设计。其入口类KafkaConsumer是一个双线程的设计,即用户主线程和心跳线程。 用户主线程,指的是启动Consumer应用程序main方法的线程,心跳线程(Heartbeat Thread)只负责定期给对应的Broker机器发送心跳请求,以表示消费者应用的存活性。