kafka發送同步消息,kafka學習四

1.引入kafka的maven依賴

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

2.創建topic

./bin/kafka-topics.sh --create --zookeeper 192.168.211.137:2181 --partitions 3 --replication-factor 1 \
--topic syn-message

3.代碼

package com.wyu.tt06kafkademo.demo;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;

import java.util.Properties;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
/**
 * 同步發送消息
 */

public class SynProducer {
    private static Properties getProps(){
        Properties props =  new Properties();
        props.put("bootstrap.servers", "192.168.211.137:9092");
        props.put("acks", "all"); // 發送所有ISR
        props.put("retries", 2); // 重試次數
        props.put("batch.size", 16384); // 批量發送大小
        props.put("buffer.memory", 102400); // 緩存大小,根據本機內存大小配置
        props.put("linger.ms", 1000); // 發送頻率,滿足任務一個條件發送
        props.put("client.id", "producer-syn-1"); // 發送端id,便於統計
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        return props;
    }

    public static void main(String[] args) {
        KafkaProducer<String, String> producer = new KafkaProducer<>(getProps());
        //循環發送十個消息
        for(int i=0; i< 10; i++){
            ProducerRecord<String, String> record = new ProducerRecord<>("syn-message",
             "topic_"+i,"message-"+i);
            Future<RecordMetadata> metadataFuture = producer.send(record);
            RecordMetadata recordMetadata = null;
            try {
                recordMetadata = metadataFuture.get();
                System.out.println("發送成功!");
                System.out.println("topic:"+recordMetadata.topic());
                System.out.println("partition:"+recordMetadata.partition());
                System.out.println("offset:"+recordMetadata.offset());
            } catch (InterruptedException|ExecutionException e) {
                System.out.println("發送失敗!");
                e.printStackTrace();
            }
        }
        producer.flush();
        producer.close();
    }
}

4.消費syn-message的數據

bin/kafka-console-consumer.sh --bootstrap-server 192.168.211.137:9092 --from-beginning --topic syn-message

在這裏插入圖片描述

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