kafka学习之一java api的使用

本篇博文介绍了kafka在java环境的api使用,主要提供了三种方式 1、单纯的api调用kafka生产消费、2、spring整合kafka 3、springBoot整合kafka,是一篇不错的java使用kafka的示例,需要读者收藏以便以后使用。
摘要由CSDN通过智能技术生成

写在前面,本篇示例是笔者实践所得,如果不当烦请及时沟通,共同学习。


​ 在上篇博文中我们介绍了kafka的框架的基础知识,这篇博文我们从java程序的使用角度去熟悉kafka框架。

1. java客户端访问kafka

1.1 maven依赖

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

注意: kafka-clients的版本主要和自己安装的kafaka版本一致 否则会报错 报错信息如下:

在这里插入图片描述

1.2 基础

创建kafka生产者/管理员

 @BeforeEach
    public void createKafkaProduct(){
   
        Properties prop = new Properties();
        //连接指定的kafka集群kafka地址,多个地址用逗号分割
        prop.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "xxx.xx.xx.xx:9092,xxx.xx.xx.xx:9093,xxx.xx.x.xxx:9094");
        //消息序列化
        prop.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer .class);
        prop.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        //省略部分kafka 生产者配置
        //创建kafka生产者
        kafkaProducer = new KafkaProducer(prop);
        //创建kafka的管理客户端 用于创建topic
        adminClient = KafkaAdminClient.create(prop);
    }

创建kafka消费者

 @BeforeEach
    public void createKafkaConsumer(){
   
        Properties prop = new Properties();
        //连接指定的kafka集群kafka地址,多个地址用逗号分割
        prop.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "xxx.xx.xx.xx:9092,xxx.xx.xx.xx:9093,xxx.xx.x.xxx:9094");
        //消息反序列化
        prop.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        prop.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        //从topic最开始的数据进行消费
        prop.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,"earliest");
        //设置kafka消费组id
        prop.put(ConsumerConfig.GROUP_ID_CONFIG,"reader-1");
        //省略部分kafka 消费者配置
        // 创建kafka消费者
        kafkaConsumer = new KafkaConsumer<>(prop);
    }

1.3 创建topic

topic是消息存储载体,创建的topic可以制定名称,分区(提供吞吐量)、副本数量(故障转移高可靠性)

//创建分区
public void testTopic(){
   
    //创建一个名为book,分区为2,副本数为3的topic 注意副本数量不能超过brokers否则报错
    NewTopic topic = new NewTopic("book",2, (short) 4);
    //adminClient在基础中已经进行了实例化 所以此处直接使用对象创建topic
    CreateTopicsResult createTopicsResult = adminClient.createTopics(Lists.newArrayList(topic));
    try {
   
        createTopicsResult.all().get();
    } catch (InterruptedException e) {
   
        e.printStackTrace();
    } catch (ExecutionException e) {
   
        e.printStackTrace();
    }
    if (createTopicsResult.all().isDone()){
   
        System.out.println("topic创建完毕");
    }
}

需要注意副本数量不能超过brokers的数量 否则报如下错误

在这里插入图片描述

1.3 生产者发送消息

发送的消息需要选择topic,如果该topic不存在则会自动创建

//生产消息
public void testProduct(){
   
    //设置
    String topic = "book";
    Integer partition = 0;
    Long timeStamp = System.currentTimeMillis();
    String key = "余华";
    String value = "兄弟";
    //创建一个消息
    ProducerRecord msg =  new ProducerRecord(topic,partition,timeStamp,key,value);
    //kafka发送消息
    Future sendFturue = kafkaProducer.send(msg);
    //获取异步结果
    Object result = null;
    try {
   
        result = sendFturue.get
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Flink是一个开源的流处理框架,而Kafka是一个分布式消息队列系统。在Flink中使用KafkaJava API可以实现将Kafka中的数据作为输入源或将处理结果输出到Kafka中。 在Flink中使用Kafka Java API的步骤通常如下: 1. 引入Kafka的依赖:首先需要将KafkaJava API的依赖添加到Flink的工程中。 2. 创建Kafka消费者:使用KafkaJava API创建一个消费者实例,可以指定消费者的一些配置如Kafka的地址、消费者组ID等。通过调用消费者的`assign()`方法或`subscribe()`方法来指定要消费的Kafka主题。 3. 创建Flink的DataStream:使用Flink的DataStream API实例化一个用于接收Kafka数据的DataStream对象。可以使用`addSource()`方法来将Kafka消费者作为数据源。可以在创建DataStream时指定Kafka消息的反序列化方式、数据类型等。 4. 执行数据处理逻辑:可以在DataStream上应用各种Flink的算子,如map、filter、reduce等,对Kafka中的数据进行处理。 5. 创建Kafka生产者:使用KafkaJava API创建一个生产者实例,可以指定生产者的一些配置。通过调用生产者的`send()`方法将处理后的结果数据发送到Kafka中。 6. 提交任务并启动Flink作业:将处理逻辑应用到Flink的任务上,并将任务提交给Flink集群进行执行。 通过以上步骤,就可以在Flink中使用KafkaJava API进行数据的输入和输出。这种方式将Kafka作为Flink的一个数据源或数据目的,使得数据可以在流处理中被实时地处理和分析。同时,由于Kafka分布式特性,也可以保证数据的可靠性和高吞吐量。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值