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

时间:2016-03-12 12:52:24

标签: apache-kafka

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

1)使用hack,如向主题发送元数据请求 - 如果auto.create.topics.enable设置为true,则可以创建主题 - 但只能使用默认配置,无法控制在分区等。

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

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

还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

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

根据Confluent REST Proxy API Reference,使用REST Proxy API v3(当前可作为预览功能)来创建主题是可能的。

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

下面给出了一个主题创建请求的示例,并记录在here中:

// instructions sorted by end
// need to find the "occurrence of x"
int occurence = 0;
int pos = instructions.binarySearch();
int i = pos;
while(instructions[i].end == x){
   count++ ;
   i++;
}
i = pos;
while(instructions[i].start <= x){
   if( x <= instructions[i].end)
       count++;
   i++;
}
// count now has the number of occurrence  of x (number of range [start, end] that contains x)

使用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