日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

如何實(shí)現(xiàn)一個(gè)簡單易用的 RocketMQ SDK

來源: 責(zé)編: 時(shí)間:2024-05-08 09:21:15 229觀看
導(dǎo)讀2018 年,做為架構(gòu)負(fù)責(zé)人,接到一個(gè)架構(gòu)需求:實(shí)現(xiàn)一個(gè)簡單易用的 RocketMQ SDK 。因?yàn)楦鱾€(gè)團(tuán)隊(duì) RocketMQ 原生客戶端配置起來千奇百怪,有的配置存在風(fēng)險(xiǎn),各團(tuán)隊(duì)負(fù)責(zé)人都需要一個(gè)簡潔易用的 RocketMQ SDK 。我立馬調(diào)研相關(guān)開

2018 年,做為架構(gòu)負(fù)責(zé)人,接到一個(gè)架構(gòu)需求:實(shí)現(xiàn)一個(gè)簡單易用的 RocketMQ SDK 。gVv28資訊網(wǎng)——每日最新資訊28at.com

因?yàn)楦鱾€(gè)團(tuán)隊(duì) RocketMQ 原生客戶端配置起來千奇百怪,有的配置存在風(fēng)險(xiǎn),各團(tuán)隊(duì)負(fù)責(zé)人都需要一個(gè)簡潔易用的 RocketMQ SDK 。gVv28資訊網(wǎng)——每日最新資訊28at.com

我立馬調(diào)研相關(guān)開源的方案,當(dāng)時(shí) RocketMQ-Spring 項(xiàng)目并沒有開源,而阿里云的 ONS SDK 是開源的,我只能講目標(biāo)轉(zhuǎn)向 阿里云 ONS 。gVv28資訊網(wǎng)——每日最新資訊28at.com

通過學(xué)習(xí) ONS 的設(shè)計(jì)方式,我對(duì)于 RocketMQ 的客戶端原理有了進(jìn)一步了解,也實(shí)現(xiàn)了公司內(nèi)部使用的 RocketMQ  SDK 。gVv28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gVv28資訊網(wǎng)——每日最新資訊28at.com

項(xiàng)目地址:https://github.com/makemyownlife/platform-rocketmqgVv28資訊網(wǎng)——每日最新資訊28at.com

之所以說簡單,就是讓用戶(開發(fā)者)使用 SDK 時(shí),減少心智負(fù)擔(dān)。gVv28資訊網(wǎng)——每日最新資訊28at.com

舉三個(gè)例子:gVv28資訊網(wǎng)——每日最新資訊28at.com

1 發(fā)送順序消息

使用原生代碼發(fā)送消息時(shí),會(huì)使用如下的代碼:gVv28資訊網(wǎng)——每日最新資訊28at.com

SendResult sendResult = producer.send(msg, new MessageQueueSelector() {    @Override    public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {        Integer id = (Integer) arg;        int index = id % mqs.size();        return mqs.get(index);    }}, orderId);

我們可以將 SDK API 簡化為:gVv28資訊網(wǎng)——每日最新資訊28at.com

SendResult send(final ProducerMessage message, final String shardingKey);

開發(fā)者不需要定義隊(duì)列選擇器,只需要傳遞分片鍵 orderId 即可。gVv28資訊網(wǎng)——每日最新資訊28at.com

2 單條消息消費(fèi)

使用原來代碼定義消費(fèi)監(jiān)聽器時(shí),使用如下的代碼:gVv28資訊網(wǎng)——每日最新資訊28at.com

consumer.registerMessageListener(new MessageListenerConcurrently() {    @Override    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {        System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);        // 返回消息消費(fèi)狀態(tài),ConsumeConcurrentlyStatus.CONSUME_SUCCESS為消費(fèi)成功        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;    }});

監(jiān)聽器內(nèi)部,對(duì)于開發(fā)者操作的對(duì)象是消息列表 msgs ,很多開發(fā)同學(xué)想只操作一條消息。gVv28資訊網(wǎng)——每日最新資訊28at.com

于是,我們可以將 SDK API 簡化為:gVv28資訊網(wǎng)——每日最新資訊28at.com

consumer.subscribe("mytest", new ConsumerListener() {    @Override    public ConsumerAction consumer(ConsumerMessage msg) {        byte[] body = msg.getBody();        System.out.println("msg:" + new String(body));        return ConsumerAction.CommitMessage;    }});

開發(fā)者在消費(fèi)時(shí),可以一條一條操作,代碼簡潔了不少。gVv28資訊網(wǎng)——每日最新資訊28at.com

同時(shí),很多開發(fā)者在使用普通消費(fèi)、順序消費(fèi)時(shí),需要返回延時(shí)消費(fèi)的狀態(tài)碼時(shí),兩種消費(fèi)模式定義的枚舉也不相同。我們將枚舉做了統(tǒng)一:gVv28資訊網(wǎng)——每日最新資訊28at.com

/** * 消費(fèi)消息的返回結(jié)果 */public enum ConsumerAction {    /**     * 消費(fèi)成功,繼續(xù)消費(fèi)下一條消息     */    CommitMessage,        /**     * 消費(fèi)失敗,告知服務(wù)器稍后再投遞這條消息,繼續(xù)消費(fèi)其他消息     */    ReconsumeLater;}

3 訂閱關(guān)系一致

實(shí)際場景里,訂閱關(guān)系不一致是極容易發(fā)生的事情,就算是高級(jí)別的架構(gòu)師也會(huì)翻車,每次翻車現(xiàn)場都是慘不忍睹。gVv28資訊網(wǎng)——每日最新資訊28at.com

正確的訂閱關(guān)系見下圖:gVv28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gVv28資訊網(wǎng)——每日最新資訊28at.com

正確的訂閱關(guān)系gVv28資訊網(wǎng)——每日最新資訊28at.com

代碼邏輯角度來看,每個(gè)消費(fèi)者實(shí)例內(nèi)訂閱方法的主題、 TAG、監(jiān)聽邏輯都需要保持一致。gVv28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gVv28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)訂閱關(guān)系不一致時(shí),在 Broker 端同一個(gè)消費(fèi)組內(nèi)的各個(gè)消費(fèi)者客戶端的訂閱信息相互被覆蓋,從而導(dǎo)致某個(gè)消費(fèi)者客戶端無法拉取到新的消息。gVv28資訊網(wǎng)——每日最新資訊28at.com

怎么解決呢 ?gVv28資訊網(wǎng)——每日最新資訊28at.com

我當(dāng)時(shí)想起了阿里技術(shù)專家沈詢的一句話:gVv28資訊網(wǎng)——每日最新資訊28at.com

世界上解決一個(gè)計(jì)算機(jī)問題最簡單的方法:“恰好”不需要解決它 !gVv28資訊網(wǎng)——每日最新資訊28at.com

公司內(nèi)部出現(xiàn)訂閱關(guān)系一致99%的問題是:消費(fèi)者組一致的前提下,主題相同,但 TAG 不相同。gVv28資訊網(wǎng)——每日最新資訊28at.com

基于此,我的設(shè)計(jì)思路就明確了:不開放訂閱 TAG 的權(quán)限!gVv28資訊網(wǎng)——每日最新資訊28at.com

沒想到吧,我就是這么粗暴。gVv28資訊網(wǎng)——每日最新資訊28at.com

按照這種設(shè)計(jì)思路,雖然開始有的程序員會(huì)有質(zhì)疑,但你和他梳理好消費(fèi)者組的定義,以及做好領(lǐng)域劃分,對(duì)業(yè)務(wù)來講,反而清晰了。gVv28資訊網(wǎng)——每日最新資訊28at.com


gVv28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-87267-0.html如何實(shí)現(xiàn)一個(gè)簡單易用的 RocketMQ SDK

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Tailwind 4.0 即將到來:前端開發(fā)的“速度與激情”

下一篇: Python Queue模塊全攻略

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
日韩天堂在线观看| 国产亚洲一区二区三区在线观看| 欧美在线在线| 久久精品久久99精品久久| 久久久久欧美| 欧美成在线观看| 欧美系列电影免费观看| 国产精品久久久久毛片软件| 国产一区自拍视频| 亚洲福利国产精品| 99国产精品99久久久久久| 亚洲欧美日本在线| 久久野战av| 欧美—级高清免费播放| 国产精品久久久久毛片大屁完整版 | 性色一区二区| 美女主播精品视频一二三四| 欧美人与性禽动交情品| 国产欧美一区二区色老头| 欧美午夜不卡在线观看免费| 国产日韩欧美一区在线 | 欧美在线免费| 欧美成人午夜免费视在线看片 | 国产日韩精品在线播放| 亚洲黄色影片| 亚洲欧美亚洲| 欧美~级网站不卡| 国产精品热久久久久夜色精品三区| 一区二区三区在线不卡| 亚洲深夜激情| 蜜乳av另类精品一区二区| 国产精品乱看| 91久久夜色精品国产网站| 午夜久久久久| 欧美理论电影在线观看| 狠狠久久亚洲欧美专区| 在线视频欧美日韩精品| 久久久久免费视频| 国产精品狠色婷| 亚洲欧洲午夜| 久久精品国产91精品亚洲| 欧美巨乳波霸| 伊人狠狠色j香婷婷综合| 亚洲永久网站| 欧美日韩妖精视频| 亚洲第一在线综合网站| 午夜免费久久久久| 欧美日韩网址| 91久久亚洲| 久久人91精品久久久久久不卡 | 美女尤物久久精品| 国产欧美一区二区精品忘忧草 | 一区二区三区在线观看欧美| 午夜精品视频在线| 欧美日本在线| 亚洲第一福利在线观看| 欧美一区免费| 国产精品激情电影| 日韩一区二区免费看| 另类成人小视频在线| 国产亚洲精品美女| 亚洲欧美另类国产| 欧美私人网站| 亚洲精品一区在线观看| 麻豆91精品91久久久的内涵| 国产在线日韩| 欧美一区二区视频在线| 国产精品久久久久久影视| 日韩视频在线播放| 欧美成人午夜| 亚洲国产精品精华液2区45 | 欧美日韩p片| 最近中文字幕日韩精品| 乱人伦精品视频在线观看| 极品尤物一区二区三区| 久久精品夜夜夜夜久久| 国产欧美日韩综合一区在线播放 | 亚洲裸体俱乐部裸体舞表演av| 久久综合色8888| 亚洲成色777777女色窝| 久久久欧美精品sm网站| 韩国精品久久久999| 久久成人精品视频| 国产日韩专区| 久久精品99国产精品日本| 国内精品久久久久久久果冻传媒 | 欧美日本韩国一区二区三区| 99精品热视频| 欧美色精品天天在线观看视频| 一本色道久久综合精品竹菊| 欧美日韩在线第一页| 亚洲视频在线一区| 国产精品视频自拍| 欧美在线二区| 激情综合色综合久久| 麻豆久久婷婷| 日韩午夜激情av| 国产精品v片在线观看不卡| 亚洲免费小视频| 国产色产综合产在线视频| 久久精品欧美日韩| 亚洲电影下载| 欧美日韩国产区| 亚洲一级网站| 国产一区二区三区的电影 | 欧美日韩国产成人在线91| 一区二区免费在线视频| 欧美深夜福利| 欧美亚洲日本国产| 在线电影欧美日韩一区二区私密| 欧美电影在线免费观看网站| 在线亚洲观看| 国产一区二区按摩在线观看| 麻豆91精品91久久久的内涵| 亚洲精品免费观看| 国产精品午夜电影| 久久久青草婷婷精品综合日韩 | 国产精品乱码久久久久久| 久久精品国产久精国产思思| 亚洲成色精品| 欧美日韩一区在线观看| 欧美在线观看视频一区二区| 在线看视频不卡| 欧美日韩国产限制| 欧美一二三视频| 亚洲国产精品一区二区三区| 欧美性事在线| 久久久国产视频91| 亚洲看片免费| 国产日产欧美a一级在线| 欧美.com| 欧美一区二区视频在线观看2020 | 欧美日韩国产亚洲一区| 欧美一级免费视频| 亚洲国产综合在线| 国产精品欧美一区二区三区奶水 | 欧美经典一区二区| 香蕉视频成人在线观看| 亚洲激情综合| 国产欧美日韩免费看aⅴ视频| 欧美不卡在线| 欧美一区二区三区免费观看视频| 91久久中文字幕| 国产视频一区三区| 欧美日韩少妇| 久久综合电影| 亚洲欧美一区二区三区极速播放 | 麻豆freexxxx性91精品| 亚洲视频在线观看免费| 亚洲福利国产| 国产欧美va欧美va香蕉在| 欧美国产一区二区三区激情无套| 欧美一二三视频| 99精品欧美一区| 亚洲第一精品夜夜躁人人爽| 国产精品一二| 欧美日韩精品免费观看视频| 久久青青草原一区二区| 亚洲欧美综合国产精品一区| 亚洲精品日产精品乱码不卡| 国产综合亚洲精品一区二| 欧美日精品一区视频| 美乳少妇欧美精品| 午夜精品久久久久影视| 日韩午夜一区| 亚洲国产高清一区| 国产一区二区你懂的| 国产精品欧美经典| 欧美三区免费完整视频在线观看| 欧美国产免费| 久久免费观看视频| 欧美一级欧美一级在线播放| 亚洲视频免费在线观看| 亚洲精品视频一区| 亚洲大片在线| 伊人蜜桃色噜噜激情综合| 国产欧美在线| 国产伦精品一区二区三区免费| 欧美三级乱码| 欧美日韩1080p| 欧美高清视频www夜色资源网| 久久久久久婷| 久久国产成人| 欧美一区二区高清| 午夜天堂精品久久久久| 在线视频一区观看| 日韩视频在线一区二区三区| 亚洲国产日韩美| 在线不卡中文字幕| 激情久久久久| 国产午夜精品福利| 国产欧美日韩三级| 国产日韩欧美在线播放不卡| 国产精品视频成人| 国产精品视频免费观看| 国产精品免费一区二区三区观看| 欧美性猛交视频| 欧美性理论片在线观看片免费| 欧美日韩在线精品一区二区三区| 欧美日韩在线一二三| 欧美午夜宅男影院| 国产精品毛片a∨一区二区三区|国| 国产精品草草| 国产精品老牛|