首页/新闻资讯/正文详情

Apache Pulsar 非持久化主题(Non-persistent Topics)实战指南:配置、命令行管理与客户端使用

发布时间:2026/9/26 0:03:59 来源:云帆数科 栏目:资讯中心
Apache Pulsar 非持久化主题(Non-persistent Topics)实战指南:配置、命令行管理与客户端使用
消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载导读本文聚焦 Apache Pulsar 中的非持久化主题Non-persistent topics消息数据从不落盘、仅驻留在 broker 内存中的主题类型。你将学会非持久化主题的命名规则与适用场景、如何在 broker 配置中开启enableNonPersistentTopics、如何用pulsar-admin non-persistent命令管理它们以及如何在不改动客户端代码的前提下直接生产/消费消息。全文以当前仓库site2/website-next/versioned_docs/version-2.2.0/cookbooks-non-persistent.md为骨架并结合 broker 源码与配置文件给出实现级细节。Overview什么是非持久化主题默认情况下Pulsar 会把所有未确认unacknowledged的消息持久化到多个 BookKeeper bookie存储节点上。持久化主题上的消息数据因此可以在 broker 重启、订阅者故障切换failover后存活。Pulsar 同时支持非持久化主题这类主题上的消息从不持久化到磁盘仅存在于内存中。使用非持久化投递时如果杀掉一个 Pulsar broker 或断开某个订阅者连接该非持久化主题上所有传输中的in-transit消息都会丢失客户端可能观察到消息丢失。非持久化主题的完整名称形如注意名称中的non-persistent域标识non-persistent://tenant/namespace/topic关于非持久化主题更上层的信息可参考 Concepts and Architecture 文档 中的非持久化主题章节。与持久化主题的本质差异源码佐证从 broker 源码结构看非持久化主题由独立类承载pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java。该类继承AbstractTopic并实现Topic接口与持久化主题的核心差异体现在没有 ManagedLedger / BookKeeper 写入链路。NonPersistentTopic内部不持有ManagedLedger消息发布路径publishMessage()直接通过内存EntryEntry entry create(0L, 0L, duplicateBuffer)推送给各订阅者的 dispatcher 与跨集群 replicator而不会写 BookKeeper参见 NonPersistentTopic.java。无持久化元数据。主题 epoch 等元数据只在内存中维护incrementTopicEpoch/setTopicEpoch直接返回内存计算结果注释明确写着 “Non-persistent topic does not have any durable metadata, so were just keeping the epoch in memory”见 NonPersistentTopic.java。消息去重deduplication检查为空操作checkMessageDeduplicationInfo()为No-op见 NonPersistentTopic.java。订阅不持久NonPersistentSubscription建立在内存中broker 重启即消失。这些差异决定了非持久化主题牺牲可靠性换取更低发布延迟省去了写盘fsync / BookKeeper 复制开销。从 admin-api-topics.md 的说明看非持久化主题面向“只消费实时发布消息、不需要持久化保证”的应用。Using如何生产/消费非持久化主题使用非持久化主题前必须先在 broker 配置中开启enableNonPersistentTopics默认即为true。使用非持久化主题时客户端唯一要做的区别就是按名称区分主题——在完整主题名中带上non-persistent域即可。例如下面的pulsar-client produce命令在 standalone 集群上向非持久化主题生产一条消息$ bin/pulsar-client produce non-persistent://public/default/example-np-topic \ --num-produce 1 \ --messages This message will be stored only in memory消费侧同理使用pulsar-client consume并指定non-persistent://tenant/namespace/topic形式的主题名$ bin/pulsar-client consume non-persistent://public/default/example-np-topic \ --subscription-name my-subscription \ --num-messages 1从管理视角看更完整的非持久化主题管理指南参见 Managing non-persistent topics管理 API 概览。服务端解析路径从代码看broker 管理接口通过请求路径前缀区分主题域AdminResource.domain()判断 URI 以persistent/开头返回persistent以non-persistent/开头返回non-persistent见 AdminResource.java。因此non-persistent://前缀是服务端识别与路由非持久化主题的入口。Enabling在 broker 配置中启用非持久化主题要在一个 Pulsar broker 上启用非持久化主题需将enableNonPersistentTopics配置项设为true。该值默认为true所以通常无需任何额外操作即可使用非持久化消息。在conf/broker.conf中对应配置如下见 broker.conf# Enable broker to load persistent topics enablePersistentTopicstrue # Enable broker to load non-persistent topics enableNonPersistentTopicstrue在 broker 源码中这两个开关定义于pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.javaenablePersistentTopics默认true见 ServiceConfiguration.javaenableNonPersistentTopics默认true注解说明为 “Enable broker to load non-persistent topics”见 ServiceConfiguration.javastandalone 模式的配置位置如果你以 standalone 模式运行 Pulsar同样的配置参数位于standalone.conf文件中对应参考配置文档中的 standalone 配置。如果希望 broker只提供非持久化主题可将enablePersistentTopics设为false、同时保持enableNonPersistentTopicstrue# broker.conf仅启用非持久化主题的极端场景 enablePersistentTopicsfalse enableNonPersistentTopicstrue相关性能调优参数扩展围绕非持久化主题conf/broker.conf中还有两个值得关注的内存/吞吐参数定义见 broker.conf默认值取自 ServiceConfiguration.java参数默认值说明maxConcurrentNonPersistentMessagePerConnection1000单条连接上可并发处理的非持久化消息上限numWorkerThreadsForNonPersistentTopicCPU 核数Runtime.getRuntime().availableProcessors()服务于非持久化主题的 worker 线程数可通过配置文件留空让系统自动按核数确定Managing with CLI用 pulsar-admin 管理非持久化主题非持久化主题可以通过pulsar-admin non-persistent命令行接口管理。该 CLI 在源码中由pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNonPersistentTopics.java实现注册的子命令包括见 CmdNonPersistentTopics.java子命令说明create-partitioned-topic创建分区非持久化主题需通过-p/--partitions指定分区数lookup从当前提供服务的 broker 上查找lookup主题stats获取主题及其生产/消费者统计信息stats-internal获取主题内部统计信息get-partitioned-topic-metadata获取分区主题元数据list列出某 namespace 下的非持久化主题list-in-bundle列出某 namespace bundle 范围内的非持久化主题常用示例# 创建 4 个分区的非持久化分区主题 $ bin/pulsar-admin non-persistent create-partitioned-topic \ non-persistent://public/default/my-np-topic \ --partitions 4 # 获取主题统计速率按最近 1 分钟窗口计算 $ bin/pulsar-admin non-persistent stats \ non-persistent://public/default/my-np-topic # 列出 namespace 下全部非持久化主题 $ bin/pulsar-admin non-persistent list public/default # 列出指定 bundle 范围内的非持久化主题 $ bin/pulsar-admin non-persistent list-in-bundle public/default --bundle 0x00000000_0xffffffff注意几点来自源码的约束create-partitioned-topic要求--partitions参数且分区主题须在创建生产者之前先创建好见 CmdNonPersistentTopics.java 中的 CreatePartitionedCmd 描述。stats的速率统计按 1 分钟窗口计算。REST API 层面非持久化主题管理路径以non-persistent为 schema 前缀如/admin/v2/non-persistent/:tenant/:namespace与持久化主题共用一套管理接口模型。管理接口与持久化主题的差异虽然 CLI 入口相近但非持久化主题缺少持久化主题的部分能力。从pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java的检查逻辑可以确认按时间戳获取消息 IDget-message-by-timestamp、peek 消息、expire 消息等操作对非持久化主题均不被允许会返回METHOD_NOT_ALLOWED见 PersistentTopicsBase.java 与 PersistentTopicsBase.java。订阅时若开启readCompacted非持久化主题也会直接拒绝readCompacted only valid on persistent topics见 NonPersistentTopic.java。Using with Pulsar clients客户端使用注意事项使用非持久化消息时Pulsar 客户端本身不需要任何改动——只需确保使用正确的主题名称即主题类型域为non-persistent的完整主题名。生产者ProducerBuilder中传入non-persistent://tenant/namespace/topic即可其余 API 用法与持久化主题完全一致。消费者同样仅需在ConsumerBuilder/ReaderBuilder中指定non-persistent://主题名订阅、ack、消息回调等 API 均通用。从源码推断客户端无需感知主题类型因为服务端AdminResource.domain()已根据non-persistent前缀完成路由客户端只在 broker 配置未开启非持久化主题时收到创建主题失败的错误。总结与适用场景非持久化主题是 Pulsar 在“持久化可靠性”之外提供的内存级实时消息通道核心取舍如下维度非持久化主题持久化主题默认消息存储仅内存不写 BookKeeper多副本写入 BookKeeper bookie可靠性broker 重启 / 订阅者断连即丢失在途消息可跨 broker 重启、订阅者故障切换存活延迟更低省去持久化开销相对更高适用场景实时流式消费、无需回溯、可容忍丢失需要消息不丢失、可重放、可回溯典型适用场景包括实时监控指标、日志流式消费、需要极低发布延迟且允许一定消息丢失的流处理管道。启用、管理、客户端接入的完整路径为broker 配置开启 →pulsar-admin non-persistent管理 → 客户端以non-persistent://前缀接入三步即可在集群中跑通内存级消息通道。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐Apache Pulsar 非持久化主题Non-persistent Topics实战指南概念、配置与 CLI 管理Apache Pulsar 非持久化主题Non persistent Topics实战指南概念、配置与 CLI 管理 非持久化主题Non persist消息队列后端流处理Apache Pulsar 非持久化主题Non-persistent Topics实战指南从内存分发原理到 CLI 管理Apache Pulsar 非持久化主题Non persistent Topics实战指南从内存分发原理到 CLI 管理 本文聚焦 Apache Puls消息队列后端流处理Apache Pulsar 非持久化主题Non-persistent Topics完整指南概念、配置、CLI 与源码原理Apache Pulsar 非持久化主题Non persistent Topics完整指南概念、配置、CLI 与源码原理 非持久化主题non persi消息队列后端流处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

画质修复APP怎么选?Wink影像修复能力与产品实力解析
画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强… · 2026/9/26 0:03:53

北京市东城区内墙材料怎么选?绿邦板业无机装饰板应用与选购建议
北京市东城区内墙材料怎么选?绿邦板业无机装饰板应用与选购建议

核心摘要北京市东城区内墙材料的选择,应围绕环保、防火、耐久、洁净与施工效率展开。绿邦板业长期专注于无石棉水泥平板、硅酸钙板、环保无机装饰板及保温装饰一体化板等新型无机建材。企业具备较完整的产品矩阵,可覆盖医院、学校、商场、写字楼、会展场… · 2026/9/26 0:03:46

易助OA 8.0表结构解析:国产协同办公系统数据库逆向指南
易助OA 8.0表结构解析:国产协同办公系统数据库逆向指南

简介:本资源为易助ERP系统8.0版本的完整数据库表结构文档集,面向数据库开发人员、ERP实施工程师及企业信息化运维人员,用于快速理解系统底层数据模型、开展二次开发或迁移适配。压缩包内含1163个文件,主体为1124个XML格式的表结构… · 2026/9/26 0:03:46

【附提示词模板】Claude Code 总跑偏?90% 的人 settings.json 没配对!建议收藏!!
【附提示词模板】Claude Code 总跑偏?90% 的人 settings.json 没配对!建议收藏!!

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:39:43

ultraedit编辑器快速学习:TaoToken 统一 Key 接入 Cline 的 config.toml 配置骨架
ultraedit编辑器快速学习:TaoToken 统一 Key 接入 Cline 的 config.toml 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:39:36

恒山科技正规吗,成立多久了
恒山科技正规吗,成立多久了

深夜的矿井调度中心,大屏上的数据曲线仍在安静跳动。井下几百米深处,设备的运转声、瓦斯的细微波动、巷道岩层的每一次变化,都被一双看不见的眼睛默默记录。这是中国矿山行业正在经历的深刻变革,智能化浪潮奔涌而来,一… · 2026/9/26 0:39:30

昇腾Atlas 300V 24G推理卡:YOLO模型部署与调优实战指南
昇腾Atlas 300V 24G推理卡:YOLO模型部署与调优实战指南

群里隔三差五就会有人甩出这么一个问题:“Atlas 300V 24G是运算加速卡吗?能不能用来部署YOLO?”说实在的,这个问题背后不是对一张卡的疑问,而是从CUDA生态第一次跳到昇腾生态时,每个人都绕不开的那堵墙。如… · 2026/9/26 0:38:01

Windows轻量HTTP文件服务器HFS实战指南
Windows轻量HTTP文件服务器HFS实战指南

1. 这不是NAS,也不是云盘——HFS在Windows上干的是一件更实在的事你有没有过这样的时刻:同事急着要一份200MB的设计源文件,微信传不了,邮箱塞不下,U盘又不在手边;或者你刚在公司电脑上导出一批测试日志&… · 2026/9/26 0:37:22

Atlas 300V 24G部署YOLOv5全流程:模型转换、推理优化与踩坑复盘
Atlas 300V 24G部署YOLOv5全流程:模型转换、推理优化与踩坑复盘

Atlas 300V 24G到底能不能跑YOLO?我用它部署YOLOv5全流程复盘最近被问得最多的一个问题:Atlas 300V 24G到底是不是一张运算加速卡?起因是团队在做YOLO系列模型的部署选型,看到Atlas 300V 24G这个规格,第一反应都是能不… · 2026/9/26 0:37:22

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码