Kafka API应用
一.kafka常用API
kafka包括常用API包括:
-
Producer API(Kafka Java Clients):允许应用程序将记录流发布到一个或多个Kafka主题
-
Consumer API(Kafka Java Clients):允许应用程序订阅或多个主题
-
Streams API(Kafka Streams组件):允许应用程序充当流处理器,使用一个或多个主题的输入流,生成一个或多个输出主题的输出流,有效地将输入流转换为输出流
-
Connector API(Kafka Connect组件):允许构建和运行可重用的生产者或消费者,将Kafka主题连接到现有的应用程序或数据系统
pom文件
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.0.0</version>
</dependency>
1.Producer API
(1)消息发送的Java代码
package nj.zb.kb09;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
import java.util.Properties;
public class MyProducer {
public static void main(String[] args) {
//TODO:1.相关配置
Properties prop = new Properties();
// Kafka服务端的主机名和端口号
prop.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.36.100:9092");
//指定序列化
//key序列化
prop.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
//value序列化
prop.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
// 等待所有副本节点的应答
prop.put(ProducerConfig.ACKS_CONFIG, "-1");
//TODO:2.创建一个kafka producer
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(prop);
//TODO:3.通过producer向topic发送数据
for (int i = 0; i < 100; i++) {
ProducerRecord<String, String> producerRecord = new ProducerRecord<>("kb09demo2", "hello world" + i);
//发送数据
producer.send(producerRecord);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("game over!!!");
}
}
(2)消息发送的Scala代码
package cn.kgc.kafka
import java.util.Properties
import org.apache.kafka.clients.producer.{
KafkaProducer, ProducerRecord}
import scala.util.Random
object Demo01_KafkaProducer {
def main(args: Array[String]