如何清除消息中心主题?

Posted

技术标签:

【中文标题】如何清除消息中心主题?【英文标题】:How to purge a Message Hub topic? 【发布时间】:2017-04-20 06:37:11 【问题描述】:

经常在使用 MessageHub 进行开发时,我发现我想从一个主题中清除我的开发数据。

如何清除 MessageHub 主题?

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

【问题讨论】:

【参考方案1】:

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

消息中心 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

【讨论】:

以上是关于如何清除消息中心主题?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 从通知中心清除个人/所有通知

如何在默认主题中对齐 ActionBar 中心的标题(Theme.Holo.Light)

单击按钮时从通知中心清除通知

通过控制中心控制 Confluent Cloud 中的主题级别权限

应用打开后从通知中心移除推送

如何在LaTeX幻灯片中放置一个大中心的“谢谢”