Apache kafka Kafka为非Java语言创建主题API选项

Apache kafka Kafka为非Java语言创建主题API选项,apache-kafka,Apache Kafka,虽然您可以通过Java或基于Java的语言创建主题(请参阅),但如果不使用Java,似乎没有一种干净的方法可以做到这一点。因此,纯语言客户端API(如纯JavaScript客户端的卡夫卡节点)无法直接创建主题。相反,我们有两种选择: 1) 使用类似于向主题发送元数据请求的技巧——如果auto.create.topics.enable设置为true,则可以创建主题——但只能使用默认配置,不能控制分区等 2) 围绕基于Java的客户机编写一个包装器,仅用于主题创建。最简单的方法是使用命令行参数执行脚

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

1) 使用类似于向主题发送元数据请求的技巧——如果
auto.create.topics.enable
设置为
true
,则可以创建主题——但只能使用默认配置,不能控制分区等

2) 围绕基于Java的客户机编写一个包装器,仅用于主题创建。最简单的方法是使用命令行参数执行脚本
bin/kafka topics.sh
,至少可以说这很难看

不过,有没有更好的办法?Zookeeper有一个纯JavaScript客户端,
节点Zookeeper客户端
,如果我直接在Zookeeper中操作代理/分区信息会怎么样


还有其他想法吗?

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

据介绍,可以使用REST Proxy API v3创建主题,该API目前作为预览功能提供

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

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

POST/v3/clusters/cluster-1/topics HTTP/1.1
主持人:kafkaproxy.example.com
内容类型:application/vnd.api+json
接受:application/vnd.api+json
{
“数据”:{
“属性”:{
“主题名称”:“主题1”,
“分区计数”:2,
“复制系数”:3,
“配置”:[
{
“名称”:“cleanup.policy”,
“值”:“紧凑”
}
]
}
}
}
使用
curl

curl-xpost-H“内容类型:application/vnd.api+json”-H“Accept:application/vnd.api+json”\
--数据{“数据”:{“属性”:{“主题名称”:“主题1”,“分区计数”:2,“复制系数”:1,“配置”:[{“名称”:“cleanup.policy”,“值”:“compact”}]}\
"http://localhost:8082/v3/clusters//topics"
其中可以使用

curl-xget-H“Accept:application/vnd.api+json”localhost:8082/v3/clusters

还有另一个客户端,但目前在Apache Kafka项目中正在进行同样的限制,该项目将公开某些管理功能,例如创建主题。一旦KIP-4完成,您很快就会看到非Java语言的更好选择。正如nautilus所说,Confluent的Kafka REST代理——非Java语言与Kafka交互的流行工具——还不支持创建Kafka主题;KIP-4在这方面也有帮助。