如何使用Kafka REST 代理删除Kafka主题?我尝试了以下命令,但它返回错误消息:
curl -X DELETE XXX.XX.XXX.XX:9092/topics/test_topic
如果不可能,那么如何更新删除消息并更新主题的方案?
根据文档API参考,你不能通过REST代理删除主题,我同意他们的观点,因为这样的破坏性操作不应该通过暴露在外部的接口来实现。
可以使用命令行实用程序在运行broker的服务器上执行主题删除操作。请参阅如何在 apache kafka 中删除主题
您可以在使用 POST /topics/(string: topic_name) REST 端点发布消息时更新消息的架构。如果新消息的架构与同一主题中的旧消息不向后兼容,您将必须配置架构注册表以允许发布不兼容的消息,否则您将收到错误。
请参阅此处的“Avro 请求示例”: http://docs.confluence.io/3.1.1/kafka-rest/docs/api.html#post--topics-(string-topic_name)
了解如何配置架构注册表以实现向前、向后或无兼容性,请参阅此处的文档: http://docs.confluence.io/3.1.1/schema-registry/docs/api.html#compatibility
我确认从5.5.0以上版本开始支持,测试结果正常。 (REST 代理 API v3)
https://docs.confluence.io/current/kafka-rest/api.html#topic
这很简单。当您在控制中心删除主题并意识到(使用检查功能嗅探浏览器流量)删除主题只不过是删除对代理的请求。
curl -s -X DELETE "http://kafka_broker:9021/2.0/kafka/${clusterid}/topics/${topic}"
根据剩余代理文档,为了删除主题,调用如下:
curl -X DELETE <REST_PROXY_URL>/clusters/<CLUSTER_ID>/topics/<TOPIC_NAME>