Pulsar Messaging(六)

非持久topic

简介

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

Pulsar也提供了非持久topic。非持久topic的消息不会被保存在硬盘上,只存活于内存中。当使用非持久topic分发时,杀掉Pulsar的broker或者关闭订阅者,此topic( non-persistent))上所有的瞬时消息都会丢失,意味着客户端可能会遇到消息缺失。

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

non-persistent://tenant/namespace/topic

如何使用非持久topic的更多信息,请参考Non-persistent messagingcookbook

在非持久性topic状态下,broker无需将其持久化到BookKeeper中,而会立即将消息传递给所有连接的订阅者。如果有一个订阅者断开连接,broker将无法重发这些瞬时消息,订阅者将永远也不能收到这些消息了。 去掉持久化存储的步骤,在某些情况下,使得非持久topic的消息比持久topic稍微变快。但是同时,Pulsar的一些核心优势也丧失掉了。

非持久topic,消息数据仅存活在内存。 如果broker挂掉或者因其他情况不能从内存取到,你的消息数据就可能丢失。除非你的项目一定需要他或者你有能力确保它一定不会各种原因丢失消息,不然并不推荐使用

默认非持久topic在broker上是开启的。 你可以通过broker的配置关闭。您可以通过pulsar admin topics命令管理非持久性主题。有关更多信息,请参阅pulsar admin

性能

一般情况下非持久性消息传递比持久性消息传递要更快,因为broker不需要持久化消息,并在消息传递到连接的代理后会立即将ACK发送回生产者。非持久topic让producer有更低的发布延迟。

客户端API

Producer和consumer以连接持久topic同样的方式连接到非持久topic。重要的区别是,topic的名称必须以non-persistent开头。非持久性主题支持三种订阅模式:独占共享故障转移

下面是一个非持久topic的java consumer例子:

PulsarClient client = PulsarClient
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值