基础环境配置
1. 添加依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.8.0</version>
</dependency>
2. 配置kafka连接信息
spring:
#kafka
kafka:
#服务地址
bootstrap-servers: 192.168.0.29:9093
#生产者配置
producer:
retries: 3 #重试次数
batch-size: 8192 #每次读取的批次字节大小,默认16384
buffer-memory: #内存缓冲区字节大小33554432
acks: 1 #发送确认机制。0:发出去就完,不管确认,效率高,丢失无保障,1:leader收到信息就完,all:所有follower收到信息再完
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
#消费者
consumer:
group-id: sms #group-id
enable-auto-commit: false #是否自动提交offset
auto-offset-reset: earliest #有offset就从offset开始消费,没有时earliest:从头开始;latest:从新的开始;none:抛异常
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
max-poll-records: 10 #一次读取几条
listener:
ack-mode: MANUAL_IMMEDIATE #手动调用Acknowledgment.acknowledge()后立即提交
3. java类
@KafkaListener(topics = KafkaConstants.SMS_TOPIC_NAME, groupId = "sms")
public void listenGroup(ConsumerRecord<String, String> record, Acknowledgment ack){
String value = record.value();
System.out.println("value1:" + value);
System.out.println("record1:" + record);
ack.acknowledge();
}