kafka_2.11-0.8.2.1生产者producer的Java实现

 

转载自:http://blog.csdn.net/ch717828/article/details/50818261

1. 开启Kafka Consumer

首先选择集群的一台机器,打开kafka consumer,接收发送给kafka的消息。我选择的是 10.101.214.71这台机器。

通过以下命令打开 Consumer 。还不了解的可以看  kafka集群环境搭建 http://blog.csdn.net/ch717828/article/details/50748872


  1. /usr/local/kafka_2.11-0.9.0.0/bin/kafka-console-consumer.sh --zookeeper 10.101.214.71:2181,10.101.214.73:2181,10.101.214.74:2181/kafka --from-beginning --topic TestTopic

2. Kafka配置文件修改

因为将要写的 Java代码在本地,而 kafka安装在集群的71,73,74这3台机器上。因此需要对kafka的配置文件做修改,下面以 71的配置为例,73,74的类似。

vim /usr/local/kafka/config/server.properties 

主要修改的内容为下面两行


  1. host.name=10.101.214.71 
  2. advertised.host.name=10.101.214.71

3. Java实现Kafka Producer

使用maven 管理依赖包,pom.xml如下        


  1. <dependency> 
  2.     <groupId>org.apache.kafka</groupId> 
  3.     <artifactId>kafka_2.11</artifactId> 
  4.     <version>0.8.2.1</version> 
  5. </dependency> 
  6.  
  7. <dependency> 
  8.     <groupId>org.apache.kafka</groupId> 
  9.     <artifactId>kafka-clients</artifactId> 
  10.     <version>0.8.2.1</version> 
  11. </dependency> 

log4j.properties 配置如下


  1. log4j.rootLogger=INFO,console  
  2.   
  3. #for package com.demo.kafka, log would be sent to kafka appender.  
  4.   
  5. log4j.logger.com.demo.kafka=DEBUG,kafka  
  6.   
  7. ## appender kafka  
  8. #log4j.appender.kafka=kafka.producer.KafkaLog4jAppender  
  9. #log4j.appender.kafka.topic=my-replicated-topic5  
  10. ## multiple brokers are separated by comma ",".  
  11. #log4j.appender.kafka.brokerList=10.101.214.71:9092,10.101.214.73:9092,10.101.214.74:9092  
  12. #log4j.appender.kafka.compressionType=none  
  13. #log4j.appender.kafka.syncSend=true  
  14. #log4j.appender.kafka.layout=org.apache.log4j.PatternLayout  
  15. #log4j.appender.kafka.layout.ConversionPattern=%d [%-5p] [%t] - [%l] %m%n  
  16.   
  17. # appender console  
  18. log4j.appender.console=org.apache.log4j.ConsoleAppender  
  19. log4j.appender.console.target=System.out  
  20. log4j.appender.console.layout=org.apache.log4j.PatternLayout  
  21. log4j.appender.console.layout.ConversionPattern=%[%-5p] [%t] - [%l] %m%n   
 Java实现代码如下,只做Demo使用,因此没有 close掉

  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. import java.util.Properties;  
  4. import kafka.javaapi.producer.Producer;  
  5. import kafka.producer.KeyedMessage;  
  6. import kafka.producer.ProducerConfig;  
  7.   
  8. public class MyProducer {  
  9.     private static final String TOPIC = "TestTopic"; //kafka创建的topic  
  10.     private static final String CONTENT = "This is a single message"; //要发送的内容  
  11.     private static final String BROKER_LIST = "10.101.214.71:9092,10.101.214.73:9092,10.101.214.74:9092"; //broker的地址和端口  
  12.     private static final String SERIALIZER_CLASS = "kafka.serializer.StringEncoder"; // 序列化类  
  13.   
  14.     public static void main(String[] args) {  
  15.         Properties props = new Properties();    
  16.         props.put("serializer.class", SERIALIZER_CLASS);  
  17.         props.put("metadata.broker.list", BROKER_LIST);  
  18.   
  19.   
  20.         ProducerConfig config = new ProducerConfig(props);  
  21.         Producer<String, String> producer = new Producer<String, String>(config);  
  22.   
  23.         //Send one message.  
  24.         KeyedMessage<String, String> message =  
  25.                 new KeyedMessage<String, String>(TOPIC, CONTENT);  
  26.         producer.send(message);  
  27.   
  28.         //Send multiple messages.  
  29.         List<KeyedMessage<String,String>> messages =  
  30.                 new ArrayList<KeyedMessage<String, String>>();  
  31.         for (int i = 0; i < 5; i++) {  
  32.             messages.add(new KeyedMessage<String, String>  
  33.                     (TOPIC, "Multiple message at a time. " + i));  
  34.         }  
  35.         producer.send(messages);  
  36.   
  37.     }  
  38. }  
运行这段代码,同时观察 Kafka Consumer的输出。可以看到输出信息为


  1. This is a single message  
  2. Multiple message at a time. 0  
  3. Multiple message at a time. 1  
  4. Multiple message at a time. 2  
  5. Multiple message at a time. 3  
  6. Multiple message at a time. 4   


此时完成了 java来向kafka产生消息。

 

 

posted @ 2017-08-28 11:20  四叶草Grass  阅读(799)  评论(0编辑  收藏  举报