如何清除Message Hub主题?

时间:2016-12-05 19:08:00

标签: apache-kafka ibm-cloud message-hub

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

如何清除MessageHub主题?

此问题与Purge Kafka Queue类似,但不同,因为该问题针对的是apache kafka,我不确定Message Hub是否支持kafka命令行工具。

1 个答案:

答案 0 :(得分:4)

从Message Hub中清除Kafka主题的唯一方法是删除并重新创建主题。您可以使用Message Hub服务提供的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标头指定Message Hub API密钥(来自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>

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

GET /topics/<TOPICNAME>

(同样必须存在X-Auth-Token标头)。 卷曲:

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