Kafka之Java API-生產者(Producers)

配置完Kafka集羣后,下面通過Java API的方式來操作

需要導入的Jar包
    kafka_2.10-0.8.1.1.jar
    log4j-1.2.15.jar
    metrics-core-2.2.0.jar
    scala-library-2.10.1.jar
    slf4j-api-1.7.2.jar
以上jar包均可從Kafka的發佈包中找的到,在lib目錄下面

生產者(Producers)

代碼:
import java.util.*; 
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;

public class TestProducer {
    public static void main(String[] args) {
        long events = Long.parseLong(args[0]);
        Random rnd = new Random();
        
        //在以下屬性中定義了Producer如何找到集羣,序列化消息等
        Properties props = new Properties();
        props.put("metadata.broker.list", "broker1:9092,broker2:9092 ");
        props.put("serializer.class", "kafka.serializer.StringEncoder");
        props.put("partitioner.class", "example.producer.SimplePartitioner");
        props.put("request.required.acks", "1");
        ProducerConfig config = new ProducerConfig(props);
       
         //定義生產者對象,該類指定了兩個參數的泛型,第一個參數表示分區鍵值的類型,第二參數表示消息類型
        Producer<String, String> producer = new Producer<String, String>(config);

        for (long nEvents = 0; nEvents < events; nEvents++) { 
               long runtime = new Date().getTime();  
               String ip = “192.168.2.” + rnd.nextInt(255); 
               String msg = runtime + “,www.example.com,” + ip; 
               //發送消息到消息中介,test指定要接受消息的主題。
               KeyedMessage<String, String> data = new KeyedMessage<String, String>("test", ip, msg);
               //執行發送
               producer.send(data);
        }
        producer.close();
    }
}

Producer配置參數:
  metadata.broker.list:定義一個或者多個消息中介(broker),Produder通過broker決定主題leader的位置。這裏無需配置所有的broker,但建議配置多於一個。
  serializer.class:定義準備傳遞數據給broker時使用哪個序列化器。
  partitioner.class:這個是可選項,該類將決定消息將發送到哪個主題分區上。
  request.required.acks:該值設置爲1後,broker收到消息後將發送一個確認信息給producer。

在上述程序運行之前請確保Kafka已經存在名稱爲test的主題,如果沒有可以使用下面命令創建
    bin/kafka-create-topic.sh --topic test --replica 3 --zookeeper localhost:2181 --partition 5

然後使用下面命令查看:
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章