Kafka 2.8.0 JAVA API基本使用

本文介绍了如何在Java中使用Kafka 2.8.0 API,包括创建Kafka Producer、自定义分区器、同步发送消息。同时讲解了消费者API,如手动提交offset、自定义存储offset,以及在消费者Rebalance中的处理。内容涵盖了配置、依赖、同步异步发送等关键点。
摘要由CSDN通过智能技术生成

以下测试皆在windows下进行,请根据自己情况酌情配置kafka zookeeper等环境

本人使用的是jdk11,代码中可能存在jdk9的新特性,使用jdk9以前的jdk的朋友请自行转换

kafka环境变量等暂时略过

1.java导入依赖

        <!--导入kafka依赖-->
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>2.8.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.13</artifactId>
            <version>2.8.0</version>
        </dependency>

kafka Producer

导入相关依赖后,创建测试类ProducerDemo;

  • 创建生产者对象

    使用KafkaProducer 创建kafka生产者对象,这时可以发现kafka不允许我们使用空构造来创建对象;

    那么我们就选用传入properties的方式创建kafka生产者

    创建生产者的时候,跟控制台命令一样,我们需要指定集群名称以及序列化器,而这些相关设置都会存储在我们的配置文件中;

    kafka给我们提供了ProducerConfig类,并在其中已经给我们提前准备好了我们所需要的key,在向properties中put键值时,可以直接使用producerConfig的静态常量作为key;并传入相应value

  • 向kafka中发送信息

    使用kafkaProducer向kafka中发送信息,可以使用其提供的send()方法 ;使用时可以看到其需要传入ProducerRecord以及一个可选的Callback

    ProducerRecord: 即为每条数据所封装成的对象

    CallBack:可选;获取函数的回调

  • close()

    在真实生产环境中,我们可能不需要手动调用close方法关闭kafkaProducer,但是目前的测试阶段,如果不使用close关闭,可能会导致发送的信息在设置等待的时间内,不会被真正的发送;

    流在关闭的时候会对数据进行回收操作

/**
 * 描述:kafkaProducer生产者
 *
 * <pre>
 * HISTORY
 * ****************************************************************************
 *  ID     DATE          PERSON          REASON
 *  1      2021/8/10 23:14    Bambi        Create
 * ****************************************************************************
 * </pre>
 *
 * @author Bambi
 * @since 1.0
 */
public class ProducerPartitionerDemo01 {
    public static void main(String[] args) {
        
        Properties properties = new Properties();
        //自行修改为对应的集群地址 kafka默认为9092,此处我没有更改
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");   
        //需要传入序列化器的全类名࿰
Java使用Kafka可以通过KafkaJava客户端库来实现。以下是使用Java编写Kafka基本步骤: 1. 引入依赖:首先,在项目的构建文件(比如Maven的pom.xml)中添加Kafka的依赖,例如: ```xml <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version> </dependency> ``` 2. 创建Producer:使用Kafka的Producer API来创建一个消息生产者。可以通过配置Producer的属性,比如设置Kafka集群的地址、消息序列化方式等,然后使用createProducer()方法创建实例。 3. 发送消息:通过调用send()方法将消息发送到指定的主题(topic)。消息可以是单个键值对(ProducerRecord)或多个键值对的集合(ProducerRecords)。 4. 创建Consumer:使用Kafka的Consumer API来创建一个消息消费者。同样地,可以通过配置Consumer的属性,比如设置消费者组ID、自动提交偏移量等,然后使用createConsumer()方法创建实例。 5. 订阅主题:通过调用subscribe()方法订阅一个或多个主题。可以使用正则表达式来匹配多个主题。 6. 接收消息:使用poll()方法从Kafka集群拉取消息。可以设置拉取超时时间来控制poll()方法的阻塞时间。收到的消息可以遍历并进行处理。 7. 提交偏移量:消费者可以选择手动或自动提交偏移量。手动提交可以通过调用commitAsync()或commitSync()方法来完成。 8. 关闭连接:在完成操作后,记得关闭生产者和消费者的连接,以释放资源。可以使用close()方法来关闭。 总结而言,Java使用Kafka的步骤包括引入依赖,创建生产者发送消息,创建消费者订阅主题接收消息,并最终关闭连接。这些步骤可以通过KafkaJava客户端库轻松实现,为构建高吞吐量、可扩展的消息处理系统提供支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值