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