• 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产生消息。

     

  • 相关阅读:
    POJ
    Parallel Computing–Cannon算法 (MPI 实现)
    POJ
    POJ 2240
    IOS
    iOS
    js遍历map匹配数据和js遍历数组匹配map数据
    vue v-on:click传递动态参数
    vue 权限控制按钮3种样式、内容、以及跳转事件
    vue v-show与v-for同时配合v-bind使用并在href中传递多个参数的使用方法
  • 原文地址:https://www.cnblogs.com/yangcx666/p/8723860.html
Copyright © 2020-2023  润新知