apache-kafka - 如何清除消息中心主题?

标签 apache-kafka ibm-cloud message-hub

在使用 MessageHub 进行开发时,我经常发现想要从某个主题中清除我的开发数据。

如何清除 MessageHub 主题?

这个问题类似于Purge Kafka Queue但有所不同,因为该问题针对 apache kafka,并且我不确定 Message Hub 是否支持 kafka 命令行工具。

最佳答案

从消息中心内清除 Kafka 主题的唯一方法是删除并重新创建该主题。您可以使用消息中心服务提供的 Web UI 手动执行此操作。或者,您可以使用 REST API 来管理 Kafka 主题。使用 REST API 的优点是可以编写脚本。

消息中心 REST API 在 Swagger 中记录如下:https://github.com/ibm-messaging/message-hub-docs/blob/master/kafka-administration-api/KafkaTopicManagement.yaml 。如果您不是 Swagger Guru,则用于删除的 REST 调用是:

POST /admin/topics/<TOPICNAME>

您需要使用 X-Auth-Token header 指定消息中心 API key (来自 VCAP_SERVICES)以对请求进行身份验证。因此示例curl 实现如下所示:

curl -k -v -X DELETE -H 'Content-Type: application/json' -H 'Accept: */*' \
    -H 'X-Auth-Token: yourapikeyhere' \                                          
    https://admin-endpoint-goes-here/admin/topics/<TOPICNAME>

一个问题是 Kafka 主题删除是异步的。因此,在重新创建主题之前,您需要确保原始主题的删除过程已完成。这可以通过轮询以下端点直到返回 404(未找到)状态代码来实现:

GET /topics/<TOPICNAME>

(同样,X-Auth-Token header 必须存在)。 在 curl 中:

curl -k -v -H -H 'Accept: application/json' \
    -H 'X-Auth-Token: yourapikeyhere' \
    https://admin-endpoint-goes-here/topics/<TOPICNAME>

要(重新)创建主题需要以下 REST 请求(还带有 X-Auth-Token):

POST /admin/topics

请求的正文包含一个 JSON 文档,其中包含描述要创建的主题的参数。例如:

{                                                                                
  "name": "TOPICNAME",                                                        
  "partitions": 2                                                                
}

在curl中这将是:

curl -k -v -H 'Content-Type: application/json' -H 'Accept: */*' \
    -H 'X-Auth-Token: yourapikeyhere' \
    -d '{ "name": "TOPICNAME", "partitions": 2 }' \
    https://admin-endpoint-goes-here/admin/topics

关于apache-kafka - 如何清除消息中心主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40981534/

相关文章:

message-hub - MirrorMaker Kafka 0.9 与 Kafka Brokers 0.10 (IBM Message Hub) 的连接

apache-kafka - IBM Bluemix Message Hub 生产者消息格式

android - alchemy 的 REST API POST 调用是什么?

docker - ibm bluemix watson的docker push错误

python - 为什么 kafka-python 无法连接到 Bluemix 消息中心服务?

json - 具有 json 模式的 Kafka jdbc 接收器连接器不起作用

java - 卡夫卡不从头开始就无法消费-Java

java - 使用 strimzi 在 Openshift 上设置 Kafka

apache-kafka - 如何在KTable中动态查找?

php - IBM Bluemix PostgreSQL 和 psql