3分钟上手Kafka-UI REST API:从安装到接口调用实战

3分钟上手Kafka-UI REST API:从安装到接口调用实战

【免费下载链接】kafka-ui provectus/kafka-ui: Kafka-UI 是一个用于管理和监控Apache Kafka集群的开源Web UI工具,提供诸如主题管理、消费者组查看、生产者测试等功能,便于对Kafka集群进行日常运维工作。 【免费下载链接】kafka-ui 项目地址: https://gitcode.com/GitHub_Trending/ka/kafka-ui

你还在手动操作Kafka集群吗?创建主题、查询消息、监控消费者组,这些重复工作占用了你多少时间?本文将带你快速掌握Kafka-UI REST API的使用方法,通过简单的接口调用实现Kafka集群的自动化管理,让你从此告别繁琐的手动操作。读完本文,你将能够:

  • 快速搭建Kafka-UI环境并启用API功能
  • 使用REST API管理Kafka主题和消费者组
  • 通过代码示例实现消息的生产与消费
  • 掌握API调用中的认证与权限控制方法

准备工作:搭建Kafka-UI环境

要使用Kafka-UI的REST API,首先需要搭建Kafka-UI环境。推荐使用Docker Compose方式部署,简单快捷。项目提供了多种Docker Compose配置文件,可根据实际需求选择。

Docker Compose快速部署

使用项目提供的基础配置文件kafka-ui.yaml,通过以下命令快速启动Kafka-UI:

version: '3.8'
services:
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    environment:
      DYNAMIC_CONFIG_ENABLED: 'true'
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092

启动命令:

docker-compose -f documentation/compose/kafka-ui.yaml up -d

启动成功后,访问 http://localhost:8080 即可打开Kafka-UI界面。

启用API访问

Kafka-UI默认启用REST API功能,无需额外配置。API端点为 http://localhost:8080/api,所有API调用都需要通过该端点进行。

核心API接口详解

Kafka-UI提供了丰富的REST API接口,涵盖了Kafka集群管理的各个方面。下面介绍几个常用的核心接口。

主题管理API

主题管理是Kafka-UI API的核心功能之一,包括创建主题、查询主题列表、获取主题详情等操作。

创建主题

创建主题的API接口定义在TopicsController.java中,具体实现如下:

@Override
public Mono<ResponseEntity<TopicDTO>> createTopic(
    String clusterName, @Valid Mono<TopicCreationDTO> topicCreationMono, ServerWebExchange exchange) {
    // 实现代码...
}

使用curl命令创建主题的示例:

curl -X POST "http://localhost:8080/api/clusters/local/topics" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "test-topic",
    "partitions": 3,
    "replicationFactor": 1,
    "configs": {
      "retention.ms": "604800000"
    }
  }'

创建成功后,可在Kafka-UI界面上看到新创建的主题:

创建主题

查询主题列表

查询主题列表的API接口:

curl -X GET "http://localhost:8080/api/clusters/local/topics?page=0&perPage=10"

返回结果示例:

{
  "topics": [
    {
      "name": "test-topic",
      "partitions": 3,
      "replicationFactor": 1,
      "internal": false,
      "configs": {}
    }
  ],
  "pageCount": 1
}

消息操作API

消息操作API允许你生产和消费Kafka消息,这对于自动化测试和数据导入非常有用。

生产消息

生产消息的API接口:

curl -X POST "http://localhost:8080/api/clusters/local/topics/test-topic/messages" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "test-key",
    "value": "Hello, Kafka-UI API!",
    "partition": 0
  }'

生产消息的效果可以在Kafka-UI界面上查看:

生产消息

消费消息

消费消息的API接口:

curl -X GET "http://localhost:8080/api/clusters/local/topics/test-topic/messages?partition=0&offset=0&count=10"

消费者组API

消费者组API允许你查询消费者组信息和消费偏移量,帮助你监控消费者的消费情况。

查询消费者组列表
curl -X GET "http://localhost:8080/api/clusters/local/consumer-groups"
查询消费者组详情
curl -X GET "http://localhost:8080/api/clusters/local/consumer-groups/test-group"

前端API调用示例

Kafka-UI的前端代码中已经封装了API调用方法,位于kafka-ui-react-app/src/lib/api.ts文件中。下面是一些前端调用API的示例。

API客户端初始化

import { Configuration, TopicsApi } from 'generated-sources';

const apiClientConf = new Configuration({
  basePath: 'http://localhost:8080/api',
  headers: {
    'Content-Type': 'application/json'
  }
});

export const topicsApiClient = new TopicsApi(apiClientConf);

创建主题

const createTopic = async () => {
  try {
    const response = await topicsApiClient.createTopic('local', {
      name: 'test-topic',
      partitions: 3,
      replicationFactor: 1,
      configs: {
        'retention.ms': '604800000'
      }
    });
    console.log('Topic created successfully:', response.data);
  } catch (error) {
    console.error('Error creating topic:', error);
  }
};

API调用流程与认证

API调用流程图

下面是使用mermaid绘制的Kafka-UI API调用流程图:

mermaid

认证与权限控制

如果Kafka-UI启用了认证功能,API调用需要包含认证信息。例如,使用Bearer Token认证:

curl -X GET "http://localhost:8080/api/clusters/local/topics" \
  -H "Authorization: Bearer <your-token>"

权限控制相关的代码实现可以参考TopicsController.java中的权限验证部分。

实战案例:自动化主题管理脚本

下面是一个使用Python编写的自动化主题管理脚本,演示了如何使用Kafka-UI REST API创建主题、生产消息和查询消息。

import requests

API_BASE_URL = "http://localhost:8080/api"
CLUSTER_NAME = "local"

def create_topic(topic_name, partitions=3, replication_factor=1):
    url = f"{API_BASE_URL}/clusters/{CLUSTER_NAME}/topics"
    data = {
        "name": topic_name,
        "partitions": partitions,
        "replicationFactor": replication_factor,
        "configs": {
            "retention.ms": "604800000"
        }
    }
    response = requests.post(url, json=data)
    return response.json()

def produce_message(topic_name, key, value, partition=0):
    url = f"{API_BASE_URL}/clusters/{CLUSTER_NAME}/topics/{topic_name}/messages"
    data = {
        "key": key,
        "value": value,
        "partition": partition
    }
    response = requests.post(url, json=data)
    return response.json()

def get_topic_messages(topic_name, partition=0, offset=0, count=10):
    url = f"{API_BASE_URL}/clusters/{CLUSTER_NAME}/topics/{topic_name}/messages"
    params = {
        "partition": partition,
        "offset": offset,
        "count": count
    }
    response = requests.get(url, params=params)
    return response.json()

# 示例用法
if __name__ == "__main__":
    topic_name = "auto-test-topic"
    
    # 创建主题
    print("Creating topic...")
    create_topic(topic_name)
    
    # 生产消息
    print("Producing message...")
    produce_message(topic_name, "test-key", "Hello from Python script!")
    
    # 查询消息
    print("Fetching messages...")
    messages = get_topic_messages(topic_name)
    print(messages)

总结与扩展

通过本文的介绍,你已经掌握了Kafka-UI REST API的基本使用方法。这些API可以帮助你实现Kafka集群的自动化管理,提高工作效率。

进阶学习资源

注意事项

  • API接口可能会随着Kafka-UI版本更新而变化,请参考对应版本的文档
  • 大批量操作时请注意控制API调用频率,避免对Kafka集群造成过大压力
  • 生产环境中建议启用API认证和权限控制,确保集群安全

希望本文能帮助你更好地利用Kafka-UI REST API,实现Kafka集群的自动化管理。如果你有任何问题或建议,欢迎在项目的GitHub仓库提交issue或PR。

如果你觉得本文对你有帮助,请点赞、收藏并关注我们的后续文章,下期我们将介绍如何使用Kafka-UI API实现高级监控和告警功能。

【免费下载链接】kafka-ui provectus/kafka-ui: Kafka-UI 是一个用于管理和监控Apache Kafka集群的开源Web UI工具,提供诸如主题管理、消费者组查看、生产者测试等功能,便于对Kafka集群进行日常运维工作。 【免费下载链接】kafka-ui 项目地址: https://gitcode.com/GitHub_Trending/ka/kafka-ui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值