package com.neverwinterdp.sparkngin; import java.util.Map; import org.slf4j.Logger; import com.google.inject.Inject; import com.google.inject.name.Named; import com.neverwinterdp.message.Message; import com.neverwinterdp.queuengin.kafka.KafkaMessageProducer; import com.neverwinterdp.util.JSONSerializer; import com.neverwinterdp.util.LoggerFactory; import com.neverwinterdp.yara.MetricRegistry; public class KafkaMessageForwarder implements MessageForwarder { private Logger logger ; private KafkaMessageProducer producer ; private Throwable error ; public KafkaMessageForwarder() {} public KafkaMessageForwarder(LoggerFactory lfactory, MetricRegistry mRegistry,Map<String, String> props) { init(lfactory, mRegistry, props) ; } @Inject public void init(LoggerFactory lfactory, MetricRegistry mRegistry, @Named("kafka-producerProperties") Map<String, String> producerProps) { logger = lfactory.getLogger(KafkaMessageForwarder.class) ; logger.info("Start init()"); logger.info("Kafka Producer Properties: \n" + JSONSerializer.INSTANCE.toString(producerProps)); producer = new KafkaMessageProducer(producerProps, mRegistry, "127.0.0.1:9092") ; logger.info("Finish init()"); } public boolean hasError() { return error != null ; } public void setError(Throwable error) { this.error = error ; } public boolean reconnect() { error = null ; producer.reconnect(); return true ; } public void forward(Message message) throws Exception { String topic = message.getHeader().getTopic() ; producer.send(topic, message); } public void close() { logger.info("Start close()"); producer.close() ; logger.info("Finish close()"); } }