Kafka 为非 Java 语言创建主题 API 选项 [英] Kafka Create Topic API Options for Non-Java Languages

查看:30
本文介绍了Kafka 为非 Java 语言创建主题 API 选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

While you can create a topic via Java or Java-based languages (see here), there does not seem to be a clean way to do this without using Java. As a result, pure-language client APIs (like kafka-node, a pure JavaScript client) can't directly create topics. Instead, we have two options:

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

1) Use a hack like sending a metadata request to a topic -- if auto.create.topics.enable is set to true, then you can create a topic -- but only with the default configuration, no control over partitions, etc.

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

2) Write a wrapper around a Java-based client just for topic creation. The easiest way to do this is to exec the script bin/kafka-topics.sh with command line arguments, which is ugly, to say the least.

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

Is there a better way to do this, though? There's a pure-JavaScript client for Zookeeper, node-zookeeper-client, what happens if I manipulate broker / partition info directly in Zookeeper?

还有其他想法吗?

推荐答案

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

You can now use REST Proxy API v3 to create Kafka topics with http requests for non-Java languages.

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

According to the Confluent REST Proxy API Reference the creation of a topic is possible with the REST Proxy API v3 that is currently available as a preview feature.

API v3 可用于评估和非生产测试目的,或向 Confluent 提供反馈."

"The API v3 can be used for evaluation and non-production testing purposes or to provide feedback to Confluent."

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

An example of a topic creation request is presented below and documented 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"

可以使用

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

这篇关于Kafka 为非 Java 语言创建主题 API 选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆