非持久性主题也是 Pulsar 的一种主题,其中消息数据永远不会持久存储,仅保存在内存中。 已创建的分区生产者和消费者,将自动查找新创建的分区。

概述

默认情况下,Pulsar会在多个 BookKeeper bookies(存储节点)上持续存储所有未确认的消息。 因此,持久性主题上的消息数据可以在 broker 重启和订阅者故障转移之后继续存在。

但是,Pulsar还支持非持久性主题,这些主题的消息从不持久存储到磁盘,只存在于内存中。 使用非持久性主题传输时,当某个 Pulsar broker宕机,或断开订阅者与某个主题(非持久性)的连接意味着所有正在传输的消息都会丢失,客户端也可能会看到消息的丢失。

非持久性主题具有这种形式的名称(注意名称中的 non-persistent):

  1. non-persistent://tenant/namespace/topic

有关非持久性主题的更多高级信息,请参见 Concepts and Architecture 文档。

使用

要使用非持久性主题,必须在 Pulsar broker 配置中启用

为了使用非持久性主题,你只需要在与它们交互时按名称区分它们。 例如,此 pulsar-client produce 命令将在单集群的非持久性主题上生产一条消息:

  1. $ bin/pulsar-client produce non-persistent://public/default/example-np-topic \
  2. --num-produce 1 \
  3. --messages "This message will be stored only in memory"

要从管理的角度获得关于非持久性主题的更详细的指南,请参阅非持久性主题指南。

启用

为了在 Pulsar broker 中启用非持久性主题,必须将 enableNonPersistentTopics 设置为true。 你无需采取任何操作来启用非持久性消息传递,因为这是默认设置。

独立模式的配置

如果你在独立模式下运行 Pulsar,则可以在 standalone.conf 配置文件中使用相同的可配置参数。

如果你想在 Broker 中启用非持久性主题,则可以将enablePersistentTopics参数设置为false,将 enableNonPersistentTopics参数设置为true

使用CLI(命令行工具)管理

可以使用 pulsar-admin non-persistent 命令行管理非持久性主题。 使用命令行工具,你可以执行诸如创建分区非持久性主题,获取非持久主题的统计信息,获取命名空间下的非持久主题列表等操作。

与Pulsar客户端一起使用

除了确保使用具有非持久性的正确主题名称作为主题类型之外,你不应该对 Pulsar 客户端进行任何更改以使用非持久性消息传递。