package com.addthis.basis.kafka;
import javax.validation.constraints.NotNull;
import java.util.Map;
import com.codahale.metrics.MetricRegistry;
import kafka.serializer.Decoder;
/**
* Consumer configuration helper for config files and building a kafka consumer service. This should
* be used for building consumers in dropwizard apps for example.
*/
public class KafkaConsumerFactory {
@NotNull
private String groupID;
@NotNull
private String zookeeper;
@NotNull
private Map<String, Integer> topics;
private Map<String, String> overrides;
public KafkaConsumerFactory() {
}
public String getGroupID() {
return groupID;
}
public void setGroupID(String groupID) {
this.groupID = groupID;
}
public String getZookeeper() {
return zookeeper;
}
public void setZookeeper(String zookeeper) {
this.zookeeper = zookeeper;
}
public Map<String, Integer> getTopics() {
return topics;
}
public void setTopics(Map<String, Integer> topics) {
this.topics = topics;
}
public Map<String, String> getOverrides() {
return overrides;
}
public void setOverrides(Map<String, String> overrides) {
this.overrides = overrides;
}
public <K, V> KafkaConsumerService<K, V> build(MetricRegistry metrics,
Decoder<K> keyDecoder,
Decoder<V> valueDecoder,
MessageHandler<K, V> handler) {
return KafkaConsumerService.<K, V>newBuilder()
.metrics(metrics)
.groupID(groupID)
.zookeeper(zookeeper)
.handler(handler)
.valueDecoder(valueDecoder)
.keyDecoder(keyDecoder)
.topics(topics)
.overrides(overrides)
.build();
}
}