【问题标题】:Kafka Create Topic API Options for Non-Java LanguagesKafka 为非 Java 语言创建主题 API 选项
【发布时间】:2020-04-28 05:06:58
【问题描述】:

虽然您可以通过 Java 或基于 Java 的语言创建主题(请参阅 here),但如果不使用 Java,似乎没有一种干净的方法可以做到这一点。因此,纯语言客户端 API(如 kafka-node,纯 JavaScript 客户端)无法直接创建主题。相反,我们有两个选择:

1) 使用像向主题发送元数据请求这样的技巧——如果auto.create.topics.enable 设置为true,那么你可以创建一个主题——但只能使用默认配置,不能控制分区等.

2) 围绕基于 Java 的客户端编写包装器,仅用于主题创建。最简单的方法是使用命令行参数exec 脚​​本bin/kafka-topics.sh,这至少可以说是丑陋的。

有没有更好的方法来做到这一点? Zookeeper 有一个纯 JavaScript 客户端,node-zookeeper-client,如果我直接在 Zookeeper 中操作代理/分区信息会怎样?

还有其他想法吗?

【问题讨论】:

标签: apache-kafka


【解决方案1】:

您现在可以使用 REST 代理 API v3 为非 Java 语言创建带有 http 请求的 Kafka 主题。

根据Confluent REST Proxy API Reference,可以使用当前作为预览功能提供的 REST 代理 API v3 创建主题。

“API v3 可用于评估和非生产测试目的或向 Confluent 提供反馈。”

主题创建请求的示例如下所示并记录在here

POST /v3/clusters/cluster-1/topics HTTP/1.1
Host: kafkaproxy.example.com
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "data": {
    "attributes": {
      "topic_name": "topic-1",
      "partitions_count": 2,
      "replication_factor": 3,
      "configs": [
        {
          "name": "cleanup.policy",
          "value": "compact"
        }
      ]
    }
  }
}

使用curl

curl -X POST -H "Content-Type: application/vnd.api+json" -H "Accept: application/vnd.api+json" \
          --data '{"data":{"attributes": {"topic_name": "topic-1", "partitions_count": 2, "replication_factor": 1, "configs": [{"name": "cleanup.policy","value": "compact"}]}}}' \
          "http://localhost:8082/v3/clusters/<cluster-id>/topics"

cluster-id 可以使用

识别
curl -X GET -H "Accept: application/vnd.api+json" localhost:8082/v3/clusters

【讨论】:

    猜你喜欢
    • 2018-03-31
    • 2021-03-16
    • 1970-01-01
    • 2016-07-21
    • 2018-05-24
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    相关资源
    最近更新 更多