springboot kafka 消费位移手动提交
************************
示例
*****************
配置文件
application.yml
spring:
kafka:
bootstrap-servers: 172.18.0.12:9092
producer:
properties:
enable.idempotence: true
consumer:
enable-auto-commit: false
listener:
missing-topics-fatal: false
type: batch
ack-mode: manual
*****************
producer 端
ProducerService
@Service
public class ProducerService {
@Resource
private KafkaTemplate<Object,String> kafkaTemplate;
public void sendSync() throws Exception{
for (int i=0;i<100;i++){
SendResult<Object,String> result=kafkaTemplate.send("sync","瓜田李下 同步发送"+i).get();
System.out.println(result);
}
}
}
*****************
consumer 端
ConsumerService
@Component
public class ConsumerService {
@KafkaListener(groupId = "consumerGroup4",topics = "sync")
public void consume4(ConsumerRecords<Object,String> consumerRecords, Acknowledgment acknowledgment){
for(TopicPartition topicPartition:consumerRecords.partitions()){
for(ConsumerRecord<Object,String> consumerRecord:consumerRecords.records(topicPartition)){
System.out.println("消费时间:"+System.currentTimeMillis()+" "+consumerRecord.value());
}
acknowledgment.acknowledge();
}
}
}
************************
控制台输出