如何清除消息中心主题?
How to purge a Message Hub topic?
经常在使用 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
header 指定消息中心 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 主题删除是异步的。因此,在 re-create 主题之前,您需要确保原始主题的删除过程已完成。这可以通过轮询以下端点直到它 returns 404(未找到)状态代码来实现:
GET /topics/<TOPICNAME>
(X-Auth-Token
header 必须存在)。
在卷曲中:
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
请求的 body 包含一个 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
经常在使用 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
header 指定消息中心 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 主题删除是异步的。因此,在 re-create 主题之前,您需要确保原始主题的删除过程已完成。这可以通过轮询以下端点直到它 returns 404(未找到)状态代码来实现:
GET /topics/<TOPICNAME>
(X-Auth-Token
header 必须存在)。
在卷曲中:
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
请求的 body 包含一个 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