Pulsar中间件入门学习

pulsar 是一种高效的服务器到服务器消息系统,具有多租户和高性能等特点,最初由 yahoo 开发,现由 apache 软件基金会管理。它是 apache 的顶级项目,定位为下一代云原生分布式消息流平台,融合了消息传递、存储和轻量级函数计算功能,采用计算与存储分离的架构设计,支持多租户、持久化存储、跨区域数据复制,具备强一致性、高吞吐、低延迟和高扩展性等流数据存储特性,被视为云原生时代实时消息流传输、存储和计算的理想解决方案。

Pulsar 的特性包括:

单实例支持多个集群,支持跨机房的消息复制。极低的发布和端到端延迟。可扩展到超过一百万个 topic。提供简单易用的客户端 API,支持 Java、Go、Python 和 C++。支持多种 topic 订阅模式,包括独占订阅、共享订阅、故障转移订阅和键共享订阅。通过 Apache BookKeeper 提供持久化消息存储,确保消息传递的可靠性。Pulsar Functions 和 Pulsar IO 提供 serverless 计算框架和数据集成解决方案。支持分层存储,可将旧数据从热存储卸载到冷/长期存储(如 S3、GCS)。

Pulsar 的架构主要包括以下组件:

Broker:负责消息传输、Topic 管理和负载均衡,不存储消息,是无状态组件。Bookie:使用 Apache BookKeeper 组件,负责消息的持久化存储。Producer:生产者,封装并发送消息到 Broker。Consumer:消费者,通过订阅 Topic 消费消息并确认。Pulsar 还定义了 Reader 角色,允许从指定位置获取消息,无需确认。Zookeeper:用于元数据存储和集群配置管理,包括租户和命名空间的一致性协调。

Pulsar 支持四种订阅模式:

独占(Exclusive)订阅:同一时间只有一个消费者可以消费数据,适用范围较小。共享(Shared)订阅:多个消费者可以同时运行,消息按轮询方式分配,但无法保证消息顺序。故障转移(Failover)订阅:在独占模式的基础上,允许启动多个消费者,当一个消费者失败时,其他消费者可以接管。键共享(KeyShared)订阅:基于共享模式,消息按键分组,同组消息由同一个消费者有序消费。

下载和安装 Pulsar 2.9.1 版本后,可以在 Linux 服务器上解压并启动单机版 Pulsar。使用命令行可以启动和终止 Pulsar 服务。

立即进入“豆包AI人工智官网入口”;

立即学习“豆包AI人工智能在线问答入口”;

在 Spring Boot 中集成 Pulsar 需要以下步骤:

引入 Maven 依赖:

    io.github.majusko    pulsar-java-spring-boot-starter    1.1.0

配置 application.yml:

pulsar:  service-url: pulsar://192.168.0.105:6650

创建 Pulsar 配置类:

@Configurationpublic class PulsarConfig {    @Bean    public ProducerFactory producerFactory() {        return new ProducerFactory().addProducer("testTopic", String.class);    }}

定义 Topic 名称常量类:

public class TopicName {    private TopicName(){}    public static final String TEST_TOPIC = "testTopic";}

创建消息生产者类:

@Componentpublic class PulsarProducer {    @Resource    private PulsarTemplate template;    public void send(String topic, T message) {        try {            template.send(topic, message);        } catch (PulsarClientException e) {            e.printStackTrace();        }    }}

创建消息消费者类:

@Componentpublic class TestTopicPulsarConsumer {    private static final Logger log = LoggerFactory.getLogger(TestTopicPulsarConsumer.class);    @PulsarConsumer(topic = TopicName.TEST_TOPIC, subscriptionType = SubscriptionType.Shared, clazz = String.class)    public void consume(String message) {        log.info("PulsarRealConsumer content:{}", message);    }}

创建 PulsarController 测试发送消息:

@RestController@RequestMapping("/pulsar")public class PulsarController {    @Resource    private PulsarProducer pulsarProducer;    @PostMapping(value = "/sendMessage")    public CommonResponse sendMessage(@RequestParam(name = "message") String message) {        pulsarProducer.send(TopicName.TEST_TOPIC, message);        return CommonResponse.success("done");    }}

定义公共响应体类:

public class CommonResponse {    private String code;    private Boolean success;    private T data;    public static  CommonResponse success(T t){        return new CommonResponse("200",true,t);    }    public CommonResponse(String code, Boolean success, T data) {        this.code = code;        this.success = success;        this.data = data;    }    //getter、setter方法}

启动项目后,可以使用 Postman 测试消息发送和接收功能。

Pulsar中间件入门学习Pulsar中间件入门学习Pulsar中间件入门学习Pulsar中间件入门学习Pulsar中间件入门学习Pulsar中间件入门学习Pulsar中间件入门学习Pulsar中间件入门学习

以上就是Pulsar中间件入门学习的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/33311.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
投资3.9亿!同光科技年产7万片碳化硅单晶衬底项目竣工
上一篇 2026年10月12日 14:14:54
《ARK : Survival Ascended》免费追加地图“核心岛”已上架
下一篇 2025年12月3日 04:40:36

相关推荐

  • Java中Docker的作用 解析容器化

    Java中Docker的作用 解析容器化Java中Docker的作用 解析容器化Java中Docker的作用 解析容器化Java中Docker的作用 解析容器化

    docker通过容器化技术解决了java应用部署中的环境不一致问题,简化了部署流程并提高了可移植性。1. 它将java应用及其依赖打包到独立镜像中,确保在任何环境中都能一致运行;2. 通过自动化部署工具如jenkins实现ci/cd,减少手动配置带来的错误风险;3. 虽有轻微性能开销但通常可忽略,甚…

    2026年10月12日 • 用户投稿
    200
  • linux清除历史的命令是什么

    linux清除历史的命令是什么linux清除历史的命令是什么linux清除历史的命令是什么linux清除历史的命令是什么

    在linux中,清除历史的命令是“history -c”;history命令的作用就是记录执行过的命令,当参数设置为“-c”时,表示可以清空当前窗口的历史输出命令。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux清除历史的命令是什么 history [-c] [-d 偏移量]…

    2026年10月12日 • 用户投稿
    000
  • SteamOS的基础:Arch Linux遇长达两周DDoS攻击!官网、论坛全波及

    SteamOS的基础:Arch Linux遇长达两周DDoS攻击!官网、论坛全波及SteamOS的基础:Arch Linux遇长达两周DDoS攻击!官网、论坛全波及SteamOS的基础:Arch Linux遇长达两周DDoS攻击!官网、论坛全波及SteamOS的基础:Arch Linux遇长达两周DDoS攻击!官网、论坛全波及

    8月24日,arch linux维护人员cristian heusel在最新公告中披露,该项目在过去两周内遭遇了持续的ddos攻击,造成这一广受欢迎的linux发行版多项服务频繁中断。 Heusel在声明中指出:“Arch Linux项目当前正面临一场持续性的DDoS攻击,主要波及我们的官方网站、A…

    2026年10月12日 • 用户投稿
    000
  • Java中Checkstyle的用法 详解规范检查

    Java中Checkstyle的用法 详解规范检查Java中Checkstyle的用法 详解规范检查Java中Checkstyle的用法 详解规范检查Java中Checkstyle的用法 详解规范检查

    checkstyle在java开发中通过预定义规则提升代码质量,是团队协作的润滑剂。它作为静态代码分析工具,扫描并报告违规情况,核心功能在于配置规则集以适应不同项目需求。在maven项目中集成checkstyle需在pom.xml中添加插件配置,指定配置文件路径、构建失败策略、控制台输出及违规级别,…

    2026年10月12日 • 用户投稿
    400
  • 如何打开eml文件?

    如何打开eml文件?如何打开eml文件?如何打开eml文件?如何打开eml文件?

    有不少朋友在使用电脑时,可能会遇到一种以eml为后缀的文件类型,但并不清楚它的含义,也不了解如何打开它。所以今天就来跟大家聊聊如何打开eml文件的方法。 eml文件该如何打开呢?近期有不少朋友都在询问这个问题。eml是一种电子邮件格式文件,通常可以用Outlook打开。EML格式是微软在Outloo…

    2026年10月12日 • 用户投稿
    100
  • linux怎样修改tomcat端口号

    linux怎样修改tomcat端口号linux怎样修改tomcat端口号linux怎样修改tomcat端口号linux怎样修改tomcat端口号

    方法:1、利用vim命令进入编辑“server.xml”文件,语法为“vim/安装路径/tomcat全名/conf/server.xml”;2、在底部输入“/8080”找到指定的端口号进行修改;3、修改完成后,输入“:wq”保存退出即可。 本教程操作环境:linux7.3系统、Dell G3电脑。 …

    2026年10月12日 • 用户投稿
    200
  • 73.5%受访者首选影院场景,海信电视U8Q高定音画定义家庭观影新标杆

    73.5%受访者首选影院场景,海信电视U8Q高定音画定义家庭观影新标杆73.5%受访者首选影院场景,海信电视U8Q高定音画定义家庭观影新标杆73.5%受访者首选影院场景,海信电视U8Q高定音画定义家庭观影新标杆73.5%受访者首选影院场景,海信电视U8Q高定音画定义家庭观影新标杆

    如今,谈及现代家居装修的流行趋势,构建家庭影院无疑是备受追捧的核心选择之一。根据奥维云网(AVC)的调研数据,高达73.5%的消费者在家庭娱乐场景中首选“影院场景”。而在设备配置上,“大屏电视”以71%的用户偏好率成为最受欢迎的产品。这一系列数据清晰地表明,随着家庭对高品质影音体验的需求持续攀升,升…

    2026年10月12日 • 用户投稿
    100
  • 特斯拉CEO马斯克:与莫迪会谈后将访问印度

    特斯拉CEO马斯克:与莫迪会谈后将访问印度特斯拉CEO马斯克:与莫迪会谈后将访问印度特斯拉CEO马斯克:与莫迪会谈后将访问印度特斯拉CEO马斯克:与莫迪会谈后将访问印度

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 近日,特斯拉CEO马斯克宣布,他计划在今年晚些时候前往印度访问。在此之前,印度总理莫迪透露,他已与马斯克讨论了技术相关事宜。 “我期待着今年晚些时候的印度之行!”马斯克在社交媒体上分享道。 莫迪…

    2026年10月12日 • 用户投稿
    000
  • Java中如何实现序列化 掌握Serializable

    Java中如何实现序列化 掌握SerializableJava中如何实现序列化 掌握SerializableJava中如何实现序列化 掌握SerializableJava中如何实现序列化 掌握Serializable

    序列化是将java对象转换为字节流以便存储或传输的过程,反序列化则是将其还原为对象。要实现序列化,类需实现serializable接口,如public class myobject implements serializable,并可显式声明serialversionuid以保证版本一致性。可通过t…

    2026年10月12日 • 用户投稿
    000
  • linux和macos的区别是什么

    linux和macos的区别是什么linux和macos的区别是什么linux和macos的区别是什么linux和macos的区别是什么

    区别:1、linux是开源的免费系统,可以在很多种设备上运行也允许开发者二次开发,而macos是苹果开发的封闭系统,仅供苹果设备使用;2、macos内核XNU更悠久,是基于两个代码库的结合,而linux新一些,是从头开始编写的。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux…

    2026年10月12日 • 用户投稿
    000
  • Composer中的^和~版本约束是什么意思_版本号约束规则深度解读

    Composer中的^和~版本约束是什么意思_版本号约束规则深度解读Composer中的^和~版本约束是什么意思_版本号约束规则深度解读Composer中的^和~版本约束是什么意思_版本号约束规则深度解读Composer中的^和~版本约束是什么意思_版本号约束规则深度解读

    答案:^允许主版本不变下的次版本和补丁更新,适用于遵循SemVer的稳定库;~更保守,通常只允许补丁更新,适合对更新敏感或处于0.x阶段的库。两者均在安全与更新间寻求平衡,结合composer.lock可确保依赖一致性,避免“依赖地狱”。 Composer中的 ^ (caret,脱字号)和 ~ (t…

    2026年10月12日 • 用户投稿
    100
  • linux怎样查询服务器内存

    linux怎样查询服务器内存linux怎样查询服务器内存linux怎样查询服务器内存linux怎样查询服务器内存

    在linux中,可以利用free命令查询服务器的内存,该命令可以用于显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等,语法为“free [-bkmotV][-s ]”。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux怎样查询服务器…

    2026年10月12日 • 用户投稿
    000
  • 《Doom》版《辐射》? 《辐射1》非官方模组正式发布首个宣传片

    《Doom》版《辐射》? 《辐射1》非官方模组正式发布首个宣传片《Doom》版《辐射》? 《辐射1》非官方模组正式发布首个宣传片《Doom》版《辐射》? 《辐射1》非官方模组正式发布首个宣传片《Doom》版《辐射》? 《辐射1》非官方模组正式发布首个宣传片

    mod创作者red888guns(alexander berezin)于7月21日首次公开了《辐射:bakersfield》。这款mod基于《doom》引擎,部分还原了bethesda(b社)旗下作品《fallout: a post nuclear role playing game》(简称《辐射1…

    2026年10月12日 • 用户投稿
    000
  • linux上怎样搭建git

    linux上怎样搭建gitlinux上怎样搭建gitlinux上怎样搭建gitlinux上怎样搭建git

    方法:1、利用“yum install git”命令安装git;2、利用“adduser git”命令创建git用户;3、利用“ssh-keygen-t rsa”命令创建公钥;4、利用“git init –bare”命令初始化git仓库。 本教程操作环境:linux7.3系统、Git2.…

    2026年10月12日 • 用户投稿
    100
  • composer的全局执行路径如何修改

    composer的全局执行路径如何修改composer的全局执行路径如何修改composer的全局执行路径如何修改composer的全局执行路径如何修改

    修改Composer全局执行路径是为了解决系统找不到composer命令的问题,需将Composer安装路径添加到环境变量中。在Windows上,通过“高级系统设置”修改Path变量,添加Composer的安装路径(如C:ProgramDataComposerSetupbin),并在命令行输入com…

    2026年10月12日 • 用户投稿
    000
  • 即梦推出“智能多帧”功能 突破AI视频长镜头创作瓶颈

    即梦推出“智能多帧”功能 突破AI视频长镜头创作瓶颈即梦推出“智能多帧”功能 突破AI视频长镜头创作瓶颈即梦推出“智能多帧”功能 突破AI视频长镜头创作瓶颈即梦推出“智能多帧”功能 突破AI视频长镜头创作瓶颈

    8月20日,即梦ai(网页版)正式推出创新视频生成功能“智能多帧”。该功能以多图驱动为核心技术,致力于破解当前ai视频创作中长镜头难以连贯生成的难题,为用户提供流畅自然、一镜到底的高质量视频创作体验。 “智能多帧”最多支持上传10张关键帧图像 目前市面上大多数AI视频生成工具仅能生成5秒或10秒的短…

    2026年10月12日 • 用户投稿
    000
  • 骁龙8E5全设备最强跑分出炉:荣耀MagicPad3 Pro室温破430万!

    10月11日消息,全场景产品负责人林林今天晒出了荣耀magicpad3 pro的跑分,室温安兔兔成绩超过430万,是目前所有搭载第五代骁龙8至尊版设备的最强跑分。 同时,这个成绩也是目前安卓产品统计到的最强跑分,名副其实的全行业第一。 据悉,荣耀MagicPad3 Pro将于10月15日19:00发…

    2026年10月12日
    100
  • Java中XMLEncoder的作用 解析Java对象序列化为XML

    Java中XMLEncoder的作用 解析Java对象序列化为XMLJava中XMLEncoder的作用 解析Java对象序列化为XMLJava中XMLEncoder的作用 解析Java对象序列化为XMLJava中XMLEncoder的作用 解析Java对象序列化为XML

    xmlencoder的局限性包括:1.依赖javabean规范,仅支持符合该规范的对象;2.生成的xml冗长;3.无法正确处理循环引用等复杂对象关系;4.处理list或map等集合类时需额外配置;5.性能不如java自带序列化或json序列化。因此,在选择xmlencoder时需权衡其易用性与上述限…

    2026年10月12日 • 用户投稿
    1400
  • linux文件只读怎么恢复

    linux文件只读怎么恢复linux文件只读怎么恢复linux文件只读怎么恢复linux文件只读怎么恢复

    linux文件只读的恢复方法:1、利用“chmod 666 指定文件”命令将只读文件设置为可读可写的文件;2、利用“chmod 222 指定文件”命令将只读文件设置为可写但是不可读文件。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux文件只读怎么恢复 首先我们打开操作系统。 …

    2026年10月12日 • 用户投稿
    200
  • composer自动加载的原理是什么

    composer自动加载的原理是什么composer自动加载的原理是什么composer自动加载的原理是什么composer自动加载的原理是什么

    答案是Composer通过spl_autoload_register实现自动加载,根据composer.json中配置的PSR-4、classmap等规则生成autoload.php,按需加载类文件,避免手动引入,提升开发效率与项目可维护性。 Composer的自动加载原理,说白了,就是它帮你把“当…

    2026年10月12日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信