delete/expire Apache Pulsar 主题中所有消息的最有效方法是什么?
What is the most efficient way to delete/expire all messages in a Apache Pulsar topic?
我想找出从 Pulsar 主题中删除所有消息(逻辑上或物理上)的最佳方法是什么,以便订阅不再使用它们?
我知道我们可以简单地做到 $ pulsar-admin persistent delete persistent://tenant/namespace/topic
。
但是,这个解决方案有一些缺点:它完全删除了主题(所以我们必须稍后重新创建它)然后应该没有活动的客户端连接到它(即:订阅或生产者)。
或者有没有办法以编程方式使两个 MessageId 之间的所有消息对订阅不可用?
谢谢
有几个选项可供您选择。
您可以使用 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 或时间戳。
我想找出从 Pulsar 主题中删除所有消息(逻辑上或物理上)的最佳方法是什么,以便订阅不再使用它们?
我知道我们可以简单地做到 $ pulsar-admin persistent delete persistent://tenant/namespace/topic
。
但是,这个解决方案有一些缺点:它完全删除了主题(所以我们必须稍后重新创建它)然后应该没有活动的客户端连接到它(即:订阅或生产者)。
或者有没有办法以编程方式使两个 MessageId 之间的所有消息对订阅不可用?
谢谢
有几个选项可供您选择。
您可以使用
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 或时间戳。