Non-persistent messaging

Non-persistent topics are Pulsar topics in which message data is never persistently stored and kept only in memory. 已创建的分区生产者和消费者,将自动查找新创建的分区。

概述

By default, Pulsar persistently stores all unacknowledged messages on multiple BookKeeper bookies (storage nodes). 因此,持久性主题上的消息数据可以在 broker 重启和订阅者故障转移之后继续存在。

Pulsar also, however, supports non-persistent topics, which are topics on which messages are never persisted to disk and live only in memory. 使用非持久性主题传输时,当某个 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 配置文件中使用相同的可配置参数。

If you’d like to enable only non-persistent topics in a broker, you can set the enablePersistentTopics parameter to false and the enableNonPersistentTopics parameter to true.

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

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

与Pulsar客户端一起使用

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