package com.github.ddth.kafka.qnd; import java.text.MessageFormat; import java.util.Arrays; import java.util.HashMap; import java.util.Map; 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.clients.consumer.OffsetAndMetadata; import org.apache.kafka.common.TopicPartition; import com.github.ddth.kafka.internal.KafkaHelper; public class QndManualCommit { public static void main(String[] args) { final String BOOTSTRAP_SERVERS = "localhost:9092"; final String TOPIC = "ddth-kafka"; final String GROUP_ID = "ddth-kafka"; KafkaConsumer<String, byte[]> consumer = KafkaHelper.createKafkaConsumer(BOOTSTRAP_SERVERS, GROUP_ID, true, false); try { consumer.subscribe(Arrays.asList(TOPIC)); while (true) { ConsumerRecords<String, byte[]> records = consumer.poll(1000); for (ConsumerRecord<String, byte[]> cr : records) { String output = MessageFormat.format( "Topic: {0}, Partition: {1}, Offset: {2}, Content: {3}", cr.topic(), cr.partition(), cr.offset(), new String(cr.value())); System.out.println(output); Map<TopicPartition, OffsetAndMetadata> offsets = new HashMap<>(); offsets.put(new TopicPartition(TOPIC, cr.partition()), new OffsetAndMetadata(cr.offset() + 1)); consumer.commitSync(offsets); } } } finally { consumer.close(); } } }