如何清除消息中心主题?

8ljdwjyq  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(435)

在使用messagehub进行开发时,我经常会发现要从主题中清除开发数据。
如何清除messagehub主题?
这个问题类似于清除kafka队列,但有所不同,因为这个问题是针对apachekafka的,我不确定messagehub是否支持kafka命令行工具。

tjjdgumg

tjjdgumg1#

从消息中心清除Kafka主题的唯一方法是删除并重新创建该主题。您可以使用MessageHub服务提供的web ui手动执行此操作。或者,您可以使用restapi来管理kafka主题。使用restapi的优点是可以编写脚本。
消息中心rest api在这里的swagger中进行了说明:https://github.com/ibm-messaging/message-hub-docs/blob/master/kafka-administration-api/kafkatopicmanagement.yaml. 如果你不是一个 swagger 的大师,那么剩下的删除调用是:

POST /admin/topics/<TOPICNAME>

您需要使用 X-Auth-Token 头来验证请求。因此,示例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 标题必须存在)。 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

相关问题