- 引入kafka依赖包,
<dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>0.8.2.1</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.8.2.1</version> </dependency> </dependencies>
- kafka连接配置
zk.connect=192.168.27.129:2181
metadata.broker.list=192.168.27.129:9092
topic=test
- kafak生产者基类
package com.ai.ecsite.kafka.producer.interfaces; import kafka.javaapi.producer.Producer; /** * 生产者 * * Created by huxin on 2016/12/20. */ public abstract class AbstractKafkaProducer { private Producer<String, String> producer; /** * 创建kafka生产者 * * @return kafka生产者 */ public abstract Producer createProducer (); /** * 发送消息到kakfa中 * * @param message 消息 */ public abstract void send (String message); /** * 关闭Kafka连接 * */ public void close (){ if (producer != null){ producer.close(); } }; }
- 创建kafka生产者对象
package com.ai.ecsite.kafka.producer.impl;
import com.ai.ecsite.kafka.producer.interfaces.AbstractKafkaProducer;
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Properties;
/**
* @author huxin
* @date 2016-11-24 14:13
*/
public class BaseKafkaProducer extends AbstractKafkaProducer {
private static final Logger logger = LoggerFactory.getLogger(BaseKafkaProducer.class);
private Producer<String, String> producer;
// zookeeper 地址
private String zkConnect;
// kafka broker
private String metadataBrokerList;
// kafka topic
private String topic;
public String getZkConnect() {
return zkConnect;
}
public void setZkConnect(String zkConnect) {
this.zkConnect = zkConnect;
}
public String getMetadataBrokerList() {
return metadataBrokerList;
}
public void setMetadataBrokerList(String metadataBrokerList) {
this.metadataBrokerList = metadataBrokerList;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
/**
* 创建kafka生产者
*
* @return kafka生产者
* @author huxin
* @create 2016/11/24
* @version V1.0.0
*/
@Override
public Producer<String, String> createProducer() {
// 构建属性信息
Properties props = new Properties();
// 设置kafka属性信息
props.put("zk.connect", zkConnect);
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("metadata.broker.list", metadataBrokerList);
// 创建kafka生产者
ProducerConfig config = new ProducerConfig(props);
producer = new Producer<String, String>(config);
return producer;
}
/**
* 将消息发送到kafka
*
* @param msg 消息
* @return
* @author huxin
* @create 2016/11/24
* @version V1.0.0
*/
@Override
public void send(String msg) {
// 初始化kafka生产者
producer = createProducer();
if (msg != null && msg.trim().length() > 0) {
producer.send(new KeyedMessage(this.topic, msg));
}
}
/**
* 同步执行
*
* @author huxin
* @create 2016/11/24
* @version V1.0.0
*/
public void startSync() {
}
}