是否可以使用Kafka Rest Proxy创建主题?

时间:2016-06-11 13:22:37

标签: apache-kafka

我正在尝试从Kafka Rest Proxy创建一个主题但我没有看到任何文档。我希望有一种方法可以做到这一点,所以我不需要以编程方式创建一个主题,而不是我做所有其他通信。有谁知道是否可能?

我在这里没有看到任何文档:http://docs.confluent.io/1.0/kafka-rest/docs/api.html

感谢您的帮助。

5 个答案:

答案 0 :(得分:7)

现在有了REST Proxy API的第3版。

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

下面给出了一个主题创建请求的示例,并记录在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

答案 1 :(得分:2)

没有。问题是没有协议支持创建主题(至少还没有)。请参阅我之前的问题 here ,并阅读评论。

答案 2 :(得分:1)

在REST代理中尚无明确的管理API来创建主题,但如果将Kafka代理属性 auto.crate.topics.enable 设置为true,则在首次发布时会创建主题对它,包括帖子来自代理的情况。更多信息How to create topics in apache kafka?

答案 3 :(得分:0)

您可以使用Azure HdInsight Kafka REST代理创建主题。 https://docs.microsoft.com/en-us/rest/api/hdinsight-kafka-rest-proxy/admin

此处有更多详细信息:https://docs.microsoft.com/en-us/azure/hdinsight/kafka/rest-proxy

答案 4 :(得分:0)

最新版本是可能的。请参阅此处:https://docs.confluent.io/platform/current/tutorials/examples/clients/docs/rest-proxy.html#basic-producer-and-consumer

来自文档:

KAFKA_CLUSTER_ID=$(docker-compose exec rest-proxy curl -X GET \
     "http://localhost:8082/v3/clusters/" | jq -r ".data[0].cluster_id")

验证参数 KAFKA_CLUSTER_ID 是否具有有效值。对于本教程中的示例,它显示为 lkc-56ngz,但在您的输出中会有所不同。

echo $KAFKA_CLUSTER_ID
Create the Kafka topic test1 using the AdminClient functionality of the REST Proxy API v3.
docker-compose exec rest-proxy curl -X POST \
     -H "Content-Type: application/json" \
     -d "{\"topic_name\":\"test1\",\"partitions_count\":6,\"configs\":[]}" \
     "http://localhost:8082/v3/clusters/${KAFKA_CLUSTER_ID}/topics" | jq .