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

发布时间:2026/9/26 0:04:28

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),仅供参考
延伸阅读

更多相关文章

2026/9/25 23:59:28

烟火识别算法落地实战:图片、RTSP与mp4统一接入及告警叠框

简介:LNTON羚通烟火识别算法与烟雾检测工具面向安防监控、消防预警及AI视觉开发者,解决图片、RTSP实时流与mp4视频中的烟火检测和烟雾识别需求,输出带告警叠框的结果图,适合具备一定计算机视觉基础、需要快速落地烟火分析功能的工…

2026/9/25 23:59:28

GitLab pre-receive钩子:用Go拦截不规范commit的实践指南

简介:这是一份面向GitLab仓库管理员与Go语言开发者的服务端钩子实践资源,聚焦于用Go编写pre-receive脚本,在推送落地前校验commit消息格式,从而阻止不符合规范的提交进入仓库。包内共4个文件,以1个main.go核心实现为主…

2026/9/26 1:04:31

从原理图到仿真:STM32环境监测开源项目的完整拆解

/* 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 1:04:31

CodeBuddy规则加载机制详解:CODEBUDDY.md与rules目录配置指南

/* 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 1:04:31

Oracle Instant Client ODBC 驱动配置实战指南

/* 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 1:04:31

电机控制电压电流工作区域:边界计算与FOC调试实战

/* 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 1:04:31

基于LoRa1276-C1-915的应急灯无线通信与低功耗设计实战

/* 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:59:31

基于Web的个人财务管理系统毕业设计:从源码跑通到避坑指南

简介:这是一套面向计算机相关专业在校学生的毕业设计级Web项目源码,主题为个人财务管理系统,采用响应式页面设计,可同时适配手机与电脑端。系统按用户角色划分为前台与后台:前台供游客和普通用户使用,涵盖用…

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

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

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

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/25 18:41:36

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑