package com.github.ddth.kafka.qnd;
import java.util.Arrays;
import java.util.Date;
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.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import com.github.ddth.commons.utils.DateFormatUtils;
import com.github.ddth.kafka.KafkaClient.ProducerType;
import com.github.ddth.kafka.internal.KafkaHelper;
public class QndTestTopicSeek {
public static void main(String[] args) throws Exception {
final String BOOTSTRAP_SERVERS = "localhost:9092";
final String TOPIC = "ddth-kafka";
final String GROUP_ID = "mynewid" + System.currentTimeMillis();
final boolean CONSUME_FROM_BEGINNING = true;
try (KafkaProducer<String, byte[]> producer = KafkaHelper
.createKafkaProducer(ProducerType.LEADER_ACK, BOOTSTRAP_SERVERS)) {
try (KafkaConsumer<String, byte[]> consumer = KafkaHelper.createKafkaConsumer(
BOOTSTRAP_SERVERS, GROUP_ID, CONSUME_FROM_BEGINNING, true)) {
KafkaHelper.seekToEnd(consumer, TOPIC);
String value = DateFormatUtils.toString(new Date(), "yyyy-MM-dd HH:mm:ss");
ProducerRecord<String, byte[]> pr = new ProducerRecord<String, byte[]>(TOPIC,
value.getBytes());
System.out.println("Send: " + producer.send(pr).get());
consumer.subscribe(Arrays.asList(TOPIC));
ConsumerRecords<?, byte[]> crs = consumer.poll(1000);
System.out.println("Count: " + crs.count());
int num = 0;
for (ConsumerRecord<?, byte[]> cr : crs) {
System.out.println(cr.topic() + "/" + cr.partition() + "/" + cr.offset() + "/"
+ new String(cr.value()));
num++;
if (num > 2) {
break;
}
}
System.out.println("==================================================");
KafkaHelper.seekToBeginning(consumer, TOPIC);
value = DateFormatUtils.toString(new Date(), "yyyy-MM-dd HH:mm:ss");
pr = new ProducerRecord<String, byte[]>(TOPIC, value.getBytes());
System.out.println("Send: " + producer.send(pr).get());
// consumer.subscribe(Arrays.asList(TOPIC));
crs = consumer.poll(1000);
System.out.println("Count: " + crs.count());
num = 0;
for (ConsumerRecord<?, byte[]> cr : crs) {
System.out.println(cr.topic() + "/" + cr.partition() + "/" + cr.offset() + "/"
+ new String(cr.value()));
num++;
if (num > 2) {
break;
}
}
}
}
}
}