Kafka之消费者

消费者是否自动提交偏移量,默认值是true,不保留数据,将消息消费掉
避免出现重复数据和数据丢失,可以把它设为 false。

properties.put("enable.auto.commit", "true");
### Kafka独立消费者API介绍 Kafka消费者可以以独立消费者(Standalone Consumer)消费者组(Consumer Group)两种主要模式消费消息,独立消费者是单个消费者独立工作,不与其他消费者协作[^1]。 ### Kafka独立消费者API使用指南 #### 依赖引入 如果使用Maven,需要在`pom.xml`中添加以下依赖: ```xml <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>3.3.1</version> </dependency> ``` #### 配置消费者属性 创建一个`Properties`对象来配置消费者的属性,如Kafka集群地址、反序列化器等。 ```java import java.util.Properties; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.common.serialization.StringDeserializer; Properties properties = new Properties(); properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); ``` #### 创建独立消费者实例 使用配置好的属性创建`KafkaConsumer`实例。 ```java import org.apache.kafka.clients.consumer.KafkaConsumer; KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties); ``` #### 订阅主题 独立消费者需要手动订阅要消费的主题。 ```java import java.util.Collections; String topic = "test-topic"; consumer.subscribe(Collections.singletonList(topic)); ``` #### 消费消息 使用`poll`方法从Kafka主题中拉取消息。 ```java import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.ConsumerRecord; try { while (true) { ConsumerRecords<String, String> records = consumer.poll(java.time.Duration.ofMillis(100)); for (ConsumerRecord<String, String> record : records) { System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()); } } } finally { consumer.close(); } ``` ### 关键点解释 - **`BOOTSTRAP_SERVERS_CONFIG`**:指定Kafka集群的地址,消费者通过这些地址连接到Kafka集群。 - **`KEY_DESERIALIZER_CLASS_CONFIG` `VALUE_DESERIALIZER_CLASS_CONFIG`**:指定键值的反序列化器,用于将从Kafka接收到的字节数据转换为Java对象。 - **`subscribe` 方法**:用于订阅一个或多个主题。 - **`poll` 方法**:从Kafka主题中拉取消息,参数为超时时间,若在超时时间内没有消息则返回空记录集。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值