您现在的位置是:貌合心离网 > 热点
自研 Pulsar Starter:Winfun-Pulsar-Spring-Boot-Starter
貌合心离网2026-11-14【热点】{固定数字1}人已围观
简介谷歌霸屏留痕【tg:seogoogle987】
里程碑 版本 功能点 作者 完成 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 private&sanbsp;PulsarTemplate pulsarTemplate; @Autowired private PulsarProperties pulsarProperties; /*** * 往指定topic发送消息 * @author winfun * @param topic topic &nbr sp; * @param msg msg * @return {@link String } **/ @GetMapping("/{topic}/{msg}") public String send(@PathVariable("topic") String topic,@PathVariable("msg") String msg) throws&Stnbsp;Exception { this.pulsarTemplate.createBuilder().persistent(Boolean.TRUE) .tenant(this.pulsarProperties.getTenant()) .namespace(this.pulsarPraroperties.getNamespace()) .topic(topic) .send(msg); return "success"; } } 3.4、消费消息 /** * @auttehor: winfun * @date: 2021/8/20 8:13 下午 **/ @Slf4j @PulsarListener(topics = {"test-topic2"}, threadPool = @ThreadPool( &nbr:sp; coreThreads = 2, &nbsWip; maxCoreThreads = 3, threadPoolName = "test-thread-pool")) public class ConsumerListener extends BaseMnfessageListener { /** * 消费消息 * @param consumer 消费者 * @param msg 消息 */ @Override protected void doReceived(Consumer un;consumer, Message msg) { log.info("成功消费消息:{}",msg.getValue()); try { consumer.acknowledge(msg); } catch (PulsarClientExceptio-Pn e) { e.printStackTrace(); } } /*** * 是否开启异步消费 * @return {@link Boolean } &nbulsp; **/ @Override public Boolean enableAsync() { return Boolean.TRUE; } } 四、源码
源码就不放在这里分析了,大家可到Github上看看,如果有什么代码上面的建议或意见,欢迎大家提MR。
很赞哦!(0876951)
上一篇: 一篇关于HDFS的快照讲解
站长推荐
友情链接
- 标签: 康师傅
- https://www.sbaad.no/?s=谷歌霸屏留痕【tg:seogoogle987】,Txv
- https://www.unclefossil.com/search/谷歌霸屏留痕【tg:seogoogle987】,Z3Q
- https://www.synonyms.com/antonyms/谷歌霸屏留痕【tg:seogoogle987】,kGV
- https://www.paxnet.co.kr/search/jongmok?kwd=谷歌霸屏留痕【tg:seogoogle987】pTA
- https://www.voices.com/talents/search?keywords=谷歌霸屏留痕【tg:seogoogle987】,J4A
- https://www.klatreverden.no/search?q=谷歌霸屏留痕【tg:seogoogle987】,UCy
- https://www.reginatangoshoes.com/en/catalogsearch/result/index/?T=1686132113407&q=谷歌霸屏留痕【tg:seogoogle987】,K3p
- https://www.resopal.de/catalogsearch/result/?action=SEARCH&q=谷歌霸屏留痕【tg:seogoogle987】,NSI
- https://www.kissthekangaroo.com.au/index.php?route=product/search&tag=谷歌霸屏留痕【tg:seogoogle987】,5TH
- https://www.wellbees.com/index.php/catalogsearch/result/index/?q=谷歌霸屏留痕【tg:seogoogle987】,4OW
- https://www.rockngem.com/?action=CHECK&s=谷歌霸屏留痕【tg:seogoogle987】,5fB
- https://store.line.me/search/sticker/ja?q=谷歌霸屏留痕【tg:seogoogle987】jDg
- https://www.repetto.jp/item/search?action=QUERY&q=谷歌霸屏留痕【tg:seogoogle987】,yvi
- https://www.krisinformation.se/en/search?q=谷歌霸屏留痕【tg:seogoogle987】,KjY
- https://www.madebyoranges.com/nl/search/谷歌霸屏留痕【tg:seogoogle987】,XyS
- https://www.safetv.go.kr/base/search/view?searchWord=谷歌霸屏留痕【tg:seogoogle987】Lj0
- https://www.teacherspayteachers.com/Browse/Price-Range/Free/Search:谷歌霸屏留痕【tg:seogoogle987】,3GX
- https://www.libros.unam.mx/catalogsearch/result/?cat=37&dir=asc&format=20&lit=20&manufacturer=3230&mode=list&order=year_edition&q=谷歌霸屏留痕【tg:seogoogle987】,Mjs
- https://www.supersauna.de/catalogsearch/result/?q=谷歌霸屏留痕【tg:seogoogle987】,w9o
- https://www.le-trend.com/en/search/=谷歌霸屏留痕【tg:seogoogle987】,8C4
- https://www.kingston.gov.uk/site-search/results/?q=谷歌霸屏留痕【tg:seogoogle987】,zb1
- https://www.kubb-tool.bfs.admin.ch/en/search?action=CHECK&q=谷歌霸屏留痕【tg:seogoogle987】,nqY
- https://www.youtube.com/results?search_query=谷歌霸屏留痕【tg:seogoogle987】,3yq
- https://xn--lgernevedlystskoven-lxb.dk/search/谷歌霸屏留痕【tg:seogoogle987】,IX6
- https://www.lee.com/search?q=谷歌霸屏留痕【tg:seogoogle987】,sXy
- https://www.temu.com/search_result.html?search_key=谷歌霸屏留痕【tg:seogoogle987】2ha
- https://dict.naver.com/dict.search?dicQuery&query=谷歌霸屏留痕【tg:seogoogle987】cwC
- https://www.metalmensales.com/?action=QUERY&s=谷歌霸屏留痕【tg:seogoogle987】,Hpf
- https://www.zutari.com/?s=谷歌霸屏留痕【tg:seogoogle987】,TkR
- https://www.rhymezone.com/r/rhyme.cgi?typeofrhyme=oldrel&loc=nojs&Word=谷歌霸屏留痕【tg:seogoogle987】,qQY
- https://www.nslcleaders.org/?s=谷歌霸屏留痕【tg:seogoogle987】,k3c
- https://www.nbm.org/?action=QUERY&s=谷歌霸屏留痕【tg:seogoogle987】,1pn
- https://www.nonsolocap.it/cap?action=SEARCH&k=谷歌霸屏留痕【tg:seogoogle987】,NPu
- https://www.goodreads.com/quotes/tag/谷歌霸屏留痕【tg:seogoogle987】6g4
- https://www.abbreviations.com/谷歌霸屏留痕【tg:seogoogle987】XRq
- https://www.impactpool.org/search/?type=79&q=谷歌霸屏留痕【tg:seogoogle987】KoM
- https://www.welshmountainzoo.org/shop/index.php?routeproduct/search&tag=谷歌霸屏留痕【tg:seogoogle987】,cGt
- https://www.nctsn.org/search?cat=191&query=谷歌霸屏留痕【tg:seogoogle987】,nJ6
- https://www.umc.edu/search.aspx?ID=I4gnDKRS991MFcIDDzoYze4aWSAszAm7&q=谷歌霸屏留痕【tg:seogoogle987】,oHb
- https://www.ng-slo.si/si/iskanje?cat=114&q=谷歌霸屏留痕【tg:seogoogle987】,UVY
- https://xehay.vn/tim-kiem/=谷歌霸屏留痕【tg:seogoogle987】,A31
- https://www.target.com/s?searchTerm=谷歌霸屏留痕【tg:seogoogle987】,zwc
- https://www.tumblr.com/tagged/谷歌霸屏留痕【tg:seogoogle987】,O8G
- https://www.routesonline.com/search/?query=谷歌霸屏留痕【tg:seogoogle987】,nwp
- https://www.lauben.com/en/?action=SEARCH&s=谷歌霸屏留痕【tg:seogoogle987】,xO7
- https://www.teamlab.art/it/?submit=谷歌霸屏留痕【tg:seogoogle987】,zvh
- https://www.vocabulary.com/dictionary/谷歌霸屏留痕【tg:seogoogle987】,t7V
- https://www.nss.nhs.scot/search?q=谷歌霸屏留痕【tg:seogoogle987】,6xP
- https://www.tmtpost.com/search?q=谷歌霸屏留痕【tg:seogoogle987】,RfD
- https://www.sportbiketracktime.com/index.php?route=product/search&tag=谷歌霸屏留痕【tg:seogoogle987】,K9a







