经常在使用 MessageHub 进行开发时,我发现我想从一个主题中清除我的开发数据。
如何清除 MessageHub 主题?
这个问题类似于Purge Kafka Queue但有所不同,因为这个问题是针对 apache kafka 的,我不确定 Message Hub 是否支持 kafka 命令行工具。
经常在使用 MessageHub 进行开发时,我发现我想从一个主题中清除我的开发数据。
如何清除 MessageHub 主题?
这个问题类似于Purge Kafka Queue但有所不同,因为这个问题是针对 apache kafka 的,我不确定 Message Hub 是否支持 kafka 命令行工具。
从 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 。如果您不是 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>
一个问题是 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 这将是:
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