2016-12-05 90 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