Kafka 客户端开发

前两篇文章讲述了 Kafka 的 工作机制 和 服务器集群部署。至此,Kafka 服务器已就绪,本文分别以官方API、Spring、SpringBoot三种构建方式,讲述了 Kafka 消费生产者和消费者的开发。作者:王克锋出处:https://kefeng.wang/2017/11/18/kafka-development/版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出...
摘要由CSDN通过智能技术生成

前两篇文章讲述了 Kafka 的 工作机制 和 服务器集群部署。至此,Kafka 服务器已就绪,本文分别以官方API、Spring、SpringBoot三种构建方式,讲述了 Kafka 消费生产者和消费者的开发。 

作者:王克锋 
出处:https://kefeng.wang/2017/11/18/kafka-development/ 
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1 开发概述

Kafka 中,客户端与服务端是通过 TCP 协议进行的; 
Kafka 公布了所有功能协议(与特定语言无关),并把 Java 客户端作为 kafka 项目的一部分进行维护。 
其他非 Java 语言的客户端则作为独立的开源项目提供,非 Java 客户端的名单可在 这里。

Kafka 提供了五类 API: 
- Producer API: 向主题(一个或多个)发布消息; 
- Consumer API: 订阅主题(一个或多个),拉取这些主题上发布的消息; 
- Stream API: 作为流处理器,从主题消费消息,向主题发布消息,把输出流转换为输入流;可参考 例子; 
- Connect API: 作为下游或上游,把主题连接到应用程序或数据系统(比如关系数据库),通常不需要直接使用这些API,而是使用 现成的连接器; 
- AdminClient API: 管理(或巡查) topic, brokers, 或其他 kafka 对象;

2 基于官方 API 开发

2.1 Maven 依赖

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>1.0.0</version>
</dependency>

2.2 logback.xml(日志配置,可选)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false">

    <contextName>logback</contextName>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{HH:mm:ss.SSS}  %p  [%F:%L] - %m%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

2.3 演示类 KafkaClientDemo.java

生产者:相应函数为 KafkaClientDemo.producerDemo(),其中 props 完整参数配置项见 Producer Configs 
消费者:相应函数为 KafkaClientDemo.consumerDemo(),其中 props 完整参数配置项见 New Consumer Configs 和 Old Consumer Configs

public class KafkaClientDemo {
    private static final Logger logger = LoggerFactory.getLogger(KafkaClientDemo.class);
    private static final String BROKER_SERVERS = "centos:9091,centos:9092,centos:9093";
    private static final String TOPIC_NAME = "topicName";

    public static void producerDemo() {
        // 配置选项
        Properties props = new Properties();
        props.put("bootstrap.servers", BROKER_SERVERS); // [必填] Kafka Broker 地址列表
        props.put("key.serializer", "org.apache.kafka.common.serialization.IntegerSerializer"); // [必填] KEY 的序列化类
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // [必填] VALUE 的序列化类
        // props.put("partitioner.class", "org.apache.kafka.clients.producer.internals.DefaultPartitioner"); // [默认值] 结合主题的分区个数和KEY,使得消息平均地分配给分区

        Producer<Integer, String> producer = new KafkaProducer<Integer, String>(props); // 建立连接
        for (int id = 1; id <= 8; ++id) {
            final int key = id;
            final String value = String.format("msg#%d", key);
            ProducerRecord<Integer, String> record = new ProducerRecord<Integer, String>(TOPIC_NAME, key, value);
            producer.send(record, new Callback() {
                public void onCompletion(RecordMetadata meta, Exception e) {
                    logger.info("KafkaProducer.push(\"{}\", {}, {}, {}, \"{}\") OK.",
                            meta.topic(), meta.partition(), meta.offset(), key, value);
                }
            }); // 推送消息
        }
        producer.flush(); // 提交
        producer.close(); // 关闭连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka 客户端工具是一种用于与 Kafka 消息队列进行通信和交互的工具。它提供了一系列命令行接口 (CLI) 和 API,可用于在 Kafka 集群中发布、订阅和使用消息。 Kafka 客户端工具具有以下主要功能: 1. 发布消息:可以使用 Kafka 客户端工具将消息发布到 Kafka 集群中的指定主题。可以通过命令行或程序化方式指定消息的内容、主题和其他属性。 2. 订阅消息:可以使用 Kafka 客户端工具从 Kafka 集群中的指定主题订阅消息。可以通过指定消费者组、分区和其他属性来灵活控制订阅行为。 3. 检查主题和分区:可以使用 Kafka 客户端工具查看 Kafka 集群中的所有主题和相应的分区信息。可以检查每个分区的偏移量、副本分布和其他有关分区的元数据。 4. 控制消费者组:可以使用 Kafka 客户端工具管理消费者组。可以列出当前活动的消费者组、查看组内消费者的偏移量以及重置偏移量等操作。 5. 监控和性能测试:Kafka 客户端工具还提供了一些监控工具和性能测试工具,用于监测和调优 Kafka 集群的性能。可以使用这些工具检查消息的产生和消费速率、分区偏移量的变化等。 总之,Kafka 客户端工具是一种便捷的工具,可以帮助开发人员和管理员与 Kafka 集群进行交互,并用于操作和管理消息的发布和订阅。无论是通过命令行还是API,它们都为处理 Kafka 数据流提供了强大的功能和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值