package com.neverwinterdp.scribengin.storage.kafka.sink;
import com.neverwinterdp.kafka.producer.DefaultKafkaWriter;
import com.neverwinterdp.scribengin.Record;
import com.neverwinterdp.scribengin.storage.StreamDescriptor;
import com.neverwinterdp.scribengin.storage.sink.SinkStreamWriter;
//TODO: Allow the writer write to the assigned partition and configure the send time out
public class KafkaSinkStreamWriter implements SinkStreamWriter {
private StreamDescriptor descriptor;
private DefaultKafkaWriter defaultKafkaWriter ;
private String topic;
public KafkaSinkStreamWriter(StreamDescriptor descriptor) {
this.descriptor = descriptor;
this.defaultKafkaWriter = new DefaultKafkaWriter(descriptor.attribute("name"), descriptor.attribute("broker.list")) ;
this.topic = descriptor.attribute("topic");
}
@Override
public void append(Record record) throws Exception {
defaultKafkaWriter.send(topic, record, 5000);
}
@Override
public void close() throws Exception {
defaultKafkaWriter.close();
}
@Override
public void rollback() throws Exception {
}
@Override
public void commit() throws Exception {
}
@Override
public void prepareCommit() {
}
@Override
public void completeCommit() {
}
}