我正在尝试找出从Pulsar主题(逻辑上或物理上)中删除所有消息的最佳方法是什么,以便订阅不再可以使用它们?
我知道我们可以简单地$ pulsar-admin persistent delete persistent://tenant/namespace/topic
。
但是,此解决方案有一些缺点:它会完全删除该主题(因此我们必须稍后重新创建),然后应该没有与其连接的活动客户端(即订阅或生产者)。
或者有没有办法以编程方式使两个MessageId之间的所有消息对于订阅都不可用?
谢谢
答案 0 :(得分:2)
您可以选择两个选项。
对于给定主题的特定订阅,您可以使用topics skip
跳过N条消息。 https://pulsar.apache.org/docs/en/admin-api-persistent-topics/#skip-messages
您可以使用topics skip-all
跳过给定主题的特定订阅的所有旧消息。 https://pulsar.apache.org/docs/en/admin-api-persistent-topics/#skip-all-messages
您可以使用topics clear-backlog
清除特定订阅的积压。与topics skip-all
相同。
您还可以使用topics reset-cursor
将订阅光标移至特定的消息ID或时间戳。