互联网技术 / 互联网资讯 · 2024年3月8日 0

自主开发的Pulsar Starter:Winfun-Pulsar-Spring-Boot-Starter

里程碑 版本 功能点 作者 完成 1.0.0 支持PulsaRtemplate发送消息&aMp;支持自定义注解实例化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 时产生大量的重复代码。

二、设计思路

由于是第一版的设计,所以我们是从简单开始,不会一开始就设计得很复杂,尽量保留 PulsaR 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是消费消息的组件。

这里我们提供一个抽象类,开发者只需要集成此实现类并实现 doReceive 方法即可,即消费消息的逻辑方法。 接着还提供一个自定义注解,自定义注解支持自定义 ConSMueR 配置,例如topic、Tenant、NaMespace等。 实现类加入上述自定义注解后,组件将会自动识别并且生成对应的 ConsuMeR 实例。 支持同步/线程池异步消费。 三、使用例子 3.1、引入依赖 3.2、加入配置 pulsaR.seRvice-uRl=pulsaR://127.0.0.1:6650 pulsaR.tenant=winfun pulsaR.naMespace=study pulsaR.operation-tiMeout=30 pulsaR.io-thReads=10 pulsaR.listeneR-thReads=10 3.3、发送消息 3.4、消费消息 四、源码

源码就不放在这里分析了,大家可到Github上看看,如果有什么代码上面的建议或意见,欢迎大家提MR。