2016-12-05 25 views
2

通常在使用MessageHub进行开发时,我发现我想从主题中清除我的开发数据。如何清除Message Hub主题?

如何清除MessageHub主题?

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

回答

4

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

Message Hub REST API记录在Swagger中:https://github.com/ibm-messaging/message-hub-docs/blob/master/kafka-administration-api/KafkaTopicManagement.yaml。如果你不是一个扬鞭大师那么REST调用来删除是:

POST /admin/topics/<TOPICNAME> 

您需要使用X-Auth-Token头进行身份验证请求到指定信息中心API密钥(来自VCAP_SERVICES)。因此,一个样本卷曲的实现将是这样的:

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> 

的一个疑难杂症是卡夫卡的话题缺失是异步的。因此,在重新创建主题之前,您需要确保原始主题的删除过程已完成。

GET /topics/<TOPICNAME> 

(再次X-Auth-Token头必须存在):这可以通过轮询,直到它返回404(未找到)状态代码来实现以下端点。 在卷曲:

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