自研 Pulsar Starter:Winfun-Pulsar-Spring-Boot-Starter
里程碑 版本 功能点 作者 完成 1.0.0 支持PulsarTemplate发送消息&支持自定义注解实例化Consumer监听消息 howinfun 1.1.0 支持动态开启/关闭Consumer消费线程池、支持自定义配置Consuemr消费线程池参数 howinfun 1.2.0 支持Spring容器停止时,释放Pulsar所有相关资源 howinfun TODO 1.3.0 支持多Pulsar数据源 howinfun TODO
一、背景
Pulsar 作为新生代云原生消息队列,越来越受到开发者的热爱;而我们现在基本上的项目都是基于 SpringBoot 上开发的,但是我们可以发现,至今都没有比较大众和成熟的关于 Pulsar 的 Starter,所以我们需要自己整一个,从而避免常规使用 Pulsar API 时产生大量的重复代码。
二、设计思路
由于是第一版的设计,所以我们是从简单开始,不会一开始就设计得很复杂,尽量保留 P自研ulsar API 原生的功能。
2.1、PulsarClient
我们都知道,不管是 Producer 还是 Consumer,都是由 PulsarClient 创建的。
当然了,PulsarClient 可以根据业务需要自定义很多参数,但是第一版的设计只会支持比较常用的参数。
我们这个组件支持下面功能点:
支持 PulsarClient 参数配置外部化,参数可配置在 applicatin.properties 中。 支持 applicatin.properties 提供配置提示信息。 读取外部配置文件,根据参数实例化 PulsarClient,并注入到 IOC 容器中。 2.2、Producer
Producer是发送消息的组件。
这里我们提供一个模版类,可以根据需求创建对应的 Producer 实例。 支持将 TopicProducer 关系缓存起来,避免重复创建 Producer 实例。 支持同步/异步发送消息。 2.3、Consumer
Consumer是消费消息的组 P件。
这里我们提供一个抽象类,开发者只需要集成此实现类并实现 doReceive 方法即可,即消费消息的逻辑方法。 接着还提供一个自定义注解,自定义注解支持自定义 Consmuer 配置,例如Topic、Tenant、Namespace等。 实现类加入上述自定义注解后,组件将会自动识别并且生成对应的 Consumer 实例。 支持同步/线程池异步消费。 三、使用例子 3.1、引入依赖 io.github.howinfun winfun-pulsar-spring-boot-starter 1.1.0 3.2、加入配置 pulsar.service-url=pulsar://127.0.0.1:6650 pulsar.tenant=wulinfun pulsar.namespace=study pulsar.operation-timeout=30 pulsar.io-threads=10 pulsar.listener-threads=10 3.3、发送消息 /** * 发送消息 * @author: winfun **/ @RestController @RequestMapping("msg") public class MessageController { @Autowired privsaate PulsarTemplate pulsarTemplate; @Autowired private PulsarProperties pulsarProperties; /*** * 往指定topic发送消息 * @author winfun * @param topic topic &nr bsp; * @param msg msg * @return {@link String } **/ @GetMapping("/{topic}/{msg}") public String send(@PathVariable("topic") String topic,@PathVariable("msg") String msg) throwsSt Exception { this.pulsarTemplate.createBuilder().persistent(Boolean.TRUE) .tenant(this.pulsarProperties.getTenant()) .namespace(this.pulsararProperties.getNamespace()) .topic(topic) .send(msg); return "success"; } } 3.4、消费消息 /** * @authoter: winfun * @date: 2021/8/20 8:13 下午 **/ @Slf4j @PulsarListener(topics = {"test-topic2"}, threadPool = @ThreadPool( &nr:bsp; coreThreads = 2, maWixCoreThreads = 3, threadPoolName = "test-thread-pool")) public class ConsumerListener extends BaseMessageListnfener { /** * 消费消息 * @param consumer 消费者 * @param msg 消息 */ @Override protected void doReceived(Consumer consumer,&unnbsp;Message msg) { log.info("成功消费消息:{}",msg.getValue()); try { consumer.acknowledge(msg); } catch (PulsarClientException e)&n-Pbsp;{ e.printStackTrace(); } } /*** * 是否开启异步消费 * @return {@link Boolean } **ul/ @Override public Boolean enableAsync() { return Boolean.TRUE; } } 四、源码
源码就不放在这里分析了,大家可到Github上看看,如果有什么代码上面的建议或意见,欢迎大家提MR。
(责任编辑:应用案例)
-
云梦级11月6日云梦级消息,据知情人士透露,小红书开启新一轮期权回购。回购价格为:在职员工21.2美元;离职员工17.5美元。 这是小红书今年第二次期权回购。4月份,小红书刚刚开启了公司历史上第一次大...[详细]
-
谷歌 DeepMind 联手核聚变初创企业,共同探索清洁能源的未来
近日,能源初创公司英联邦聚变系统(Commonwealth Fusion Systems, CFS)宣布与谷歌的 DeepMind 部门合作,利用人工智能技术优化其即将上线的 Sparc 核聚变反应堆...[详细]
-
Kimi 推出全新 Agent 模式 “OK Computer”,开启灰度测试
近日,月之暗面发布了全新的 Agent 模式 “OK Computer”,并于今天正式开启灰度测试。这一模式的推出,标志着 Kimi K2模型在智能体和工具调用能力上又迈出了重要一步。OK Compu...[详细]
-
硅谷的大厂Offer对于很多程序员还是非常有吸引力的,而今年的机器学习(ML)相关岗位又是其中的「香饽饽」。然而,被CMU/Stanford/MIT/Berkeley大佬包围下,非名校生到底有多大机会...[详细]
-
今日,微信官方正式宣布上线公众号“智能回复”功能,为公众号运营者带来全新互动体验。据介绍,公众号运营者只需在PC端后台的“互动管理”模块中点击“自动回复”,即可轻松开启这一智能服务。 “智能回复”功能...[详细]
-
浜戣�绠楁牳蹇冩妧鏈疍ocker鏁欑▼锛欴ocker涓奅CS婊氬姩鏇存柊鍜屾煡鐪嬪簲鐢ㄧ▼搴忔棩蹇�
婊氬姩鏇存柊 瑕佸湪涓嶄腑鏂�敓浜ф祦绋嬬殑鎯呭喌涓嬫洿鏂版偍鐨勫簲鐢ㄧ▼搴忥紝鎮ㄥ彧闇€docker compose up鍦ㄦ洿鏂扮殑 Compose 椤圭洰涓婁娇鐢ㄥ嵆鍙�€傛偍鐨� ECS 鏈嶅...[详细]
-
2025年11月,比亚迪销售超48万辆,其中海外销售突破13万辆,双双创年内新高。2025年1-11月,比亚迪累计销售已超418万辆,持续领跑全球新能源汽车市场,完成全年460万销量目标也是板上钉钉的...[详细]
-
标签: 吉利汽车 2026年财报 第一季度财报 吉利汽车财报
云梦级4月30日云梦级消息,吉利汽车(股票代码:00175.HK)今日发布截至2026年3月31日的财报。财报显示,吉利汽车2026年第一季度营收为837.76亿元,较上年同期的726.92亿元增长1...[详细]
-
标签: 小米机器人 雷军 Xiaomi-Robotics-0 智能制造
云梦级3月2日云梦级消息,据雷军透露,小米机器人已经开始在汽车工厂实习。 雷军表示,小米在通用VLA基座模型Xiaomi-Robotics-0的基础上,结合多模态感知能力和强化学习技术,小米人形机器人...[详细]
-
谷歌推出 EmbeddingGemma:高效的移动端文本嵌入模型
来自谷歌深度学习团队的最新消息,他们正式推出了 EmbeddingGemma,这是一款专为移动设备设计的开源嵌入模型。EmbeddingGemma 以其308百万个参数的高效设计,在 MTEB(大规模...[详细]

标签: 壹账通 平安集团 金融科技
斯坦福大学:人工智能本科 4 年课程清单
谷歌 DeepMind 推出全新机器人 AI 模型 可实现洗衣物分类
标签: 埃森哲 Faculty AI初创 并购
全球首位 AI 全栈工程师 “Orchids” 问世
