rocketmq 消息指定_SpringBoot 整合 RocketMQ 如何實現消息生產消費?

58638fb31fca6cd386360d2b17347c60.png

有時候我們在使用消息隊列的時候,往往需要能夠保證消息的順序消費,而RocketMQ是可以支持消息的順序消費的。


RocketMQ在發送消息的時候,是將消息發送到不同的隊列中,然后消費端從多個隊列中讀取消息進行消費,很明顯,在這種全局模式下,是無法實現順序消費的。


為了實現順序消費,我們需要把有順序的消息按照他的順序,將他們發送到同一個隊列中,這樣消費端在消費的時候,就保證了其順序。
但是順序消費的性能肯定也相對差一些,因為只能使用一個隊列。

一、在pom.xml中添加依賴:

<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.1.0</version>
</dependency>

二、在application.yml中配置RocketMQ地址:

server:port: 8888rocketmq:name-server: 127.0.0.1:9876producer:group: ${spring.application.name}sendMessageTimeout: 300000

備注:官方下載RocketMQ,本地啟動RocketMQ。

三、 一個簡單的生產消費案例:

生產者:向 stringTopic 的主題中發送一個 Hello RecketMQ 的字符串。


@RestController@RequestMapping("/mq")public class ProducerController {@Resourceprivate RocketMQTemplate rocketMQTemplate;@RequestMapping("/sync/send1")public String syncSendString() {//發送一個同步消息,會返回值 ---發送到 stringTopic 主題SendResult sendResult = rocketMQTemplate.syncSend("stringTopic", "Hello RocketMQ");return sendResult.toString();}}

消費者:監聽 stringTopic 主題。


@Service@RocketMQMessageListener(topic = "stringTopic", consumerGroup = "string_consumer")public class StringConsumer implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {System.out.println("消費者接收消息:" + message);}}

1、啟動當前服務。
2、用瀏覽器或者HTTP Client工具訪問:http://localhost:8888/mq/sync/send1
3、查看控制臺輸出:【消費者接收消息:Hello RocketMQ】即表示消息消費成功。

四、實現順序消費

生產者: 生產多條消息,方便觀察順序。向 orderTopic 主題發送5條消息,內容分別是 no1 no2 no3 no4 no5。第三個參數是order ,他的作用是會根據他的hash值計算發送到哪一個隊列。用同一個值order,那么他們的hash一樣。可以保證發送到同一個隊列里。


@RestController@RequestMapping("/mq")public class ProducerController {@Resourceprivate RocketMQTemplate rocketMQTemplate;/**************驗證RocketMQ順序消費***************/@RequestMapping("/send/ordered")public String sendOrderedMsg(){/*** hashKey: 為了保證報到同一個隊列中,將消息發送到orderTopic主題上*/rocketMQTemplate.syncSendOrderly("orderTopic","no1","order");rocketMQTemplate.syncSendOrderly("orderTopic","no2","order");rocketMQTemplate.syncSendOrderly("orderTopic","no3","order");rocketMQTemplate.syncSendOrderly("orderTopic","no4","order");rocketMQTemplate.syncSendOrderly("orderTopic","no5","order");return "success";}}

消費者:消費者在消費的時候,默認是異步多線程消費的,所以無法保證順序,需要指定同步消費。指定 consumeMode = ConsumeMode.ORDERLY。默認值是 consumeMode = ConsumeMode.CONCURRENT。


@Service@RocketMQMessageListener(topic = "orderTopic", consumerGroup = "ordered-consumer", consumeMode = ConsumeMode.ORDERLY)public class OrderedConsumer implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {System.out.println("順序消費,收到消息:" + message);}}

1、啟動當前服務。
2、用瀏覽器或者HTTP Client工具訪問:http://localhost:8888/mq/send/ordered
3、查看控制臺輸出:【順序打印:no1 no2 no3 no4 no5】即表示消息消費成功。

5b89af0ce138cc9240a33a89a6fa3340.png

Spring是一個JavaEE一站式的開發框架。它提供的功能涵蓋了JavaEE程序中的表示層,服務層,持久層功能組件。這意味著,使用了Spring框架,一個框架就可以滿足整個JavaEE程序的開發。

但Spring框架,更加強調的是它的輕量級(模塊的可插拔)!!也就是說,除了內核以外模塊,如果你不想使用可以不用,它能夠整合任何第三方的框架。

所以,在現實開發中,Spring主要用于整合其他框架。我也整理了一份關于spring的面試題,希望可以幫助到大家!

感謝你看到這里,我是程序員青秧,一枚小碼農,從事開發六年了,每天都會分享java相關技術文章或行業資訊

歡迎大家關注我的專欄:

程序員青秧

里面不定期分享Java架構技術知識點及解析,還會不斷更新BATJ面試專題,歡迎大家前來探討交流,如有好的文章也歡迎投稿。(注意專欄簡介的介紹獲取最新一線大廠Java面試題總結資料!)

注意專欄簡介的介紹獲取最新一線大廠Java面試題總結資料!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534080.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534080.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534080.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql怎么看實例名_南方“中看不中吃”的前4名水果,蓮霧只是墊底,你怎么看?...

水果很多人都喜歡吃&#xff0c;南方人可以說是最幸福的&#xff0c;因為南方的水果種類有很多種&#xff0c;而且水果的價格也很便宜&#xff0c;一年四季都能吃到便宜又好吃的水果&#xff0c;南方的很多水果&#xff0c;北方人可能都沒有吃過&#xff0c;雖然南方的水果種類…

html頁面怎么加向下滾動,如何使用jQuery向上或向下滾動頁面到錨點?

如何使用jQuery向上或向下滾動頁面到錨點&#xff1f;我正在尋找一種方法來包含幻燈片效果&#xff0c;當您單擊頁面上或下的本地錨點鏈接時。我想要一個你有這樣一個鏈接的東西&#xff1a;link text, img etc.也許添加了一個類&#xff0c;所以你知道你希望這個鏈接是一個滑動…

vuex中的值變化 頁面重新渲染_淺談瀏覽器的渲染過程,重繪與回流

瀏覽器的渲染過程 首先&#xff0c;我們先來了解一下瀏覽器的渲染過程是什么樣的&#xff0c;也就是說瀏覽器把一堆代碼呈現到頁面上的過程是什么樣子的&#xff0c;瀏覽器采用流式布局模型(Flow Bsaed Layout)&#xff0c;根據下圖&#xff0c;我們可以總結出瀏覽器的渲染步驟…

vc 將已有項目打包成dll 并應用于其他項目_.NET混淆器 Dotfuscator使用教程:保護你的應用之存檔報告文件...

Dotfuscator是一款.NET混淆器和壓縮器&#xff0c;防止你的應用程序被反編譯。本篇文章將繼續上一篇文章與大家分享保護應用程序的后續三個部分&#xff1a;存檔報告文件、加強保護和替代方法。存檔報告文件作為構建的一部分&#xff0c;Dotfuscator會生成報告文件(在Dotfuscat…

html文件內容搜索,html讀出文本文件內容

html讀出文本文件內容更新時間&#xff1a;2007年01月22日 00:00:00 作者&#xff1a;Function bytes2BSTR(vIn)strReturn ""For i 1 To LenB(vIn)ThisCharCode AscB(MidB(vIn,i,1))If ThisCharCode strReturn strReturn & Chr(ThisCharCode)ElseNextCharC…

python 定義變量_python-003-變量

1.變量的定義python中,在程序運行時,可以隨著程序的運行更改的量成為變量.簡單理解: 變量就是用來臨時存儲數據的容器.可以認為好比是 逛超市 買面條 使用購物車 裝面條變量 -> 購物車數據 -> 面條2.變量的使用# 第一次輸入一個10 num1 10 # 第二次輸入一個20 num2 20 …

蘋果11是高通基帶嗎_最強對抗!小米11對抗三星、蘋果華為等最高旗艦|喜歡小米嗎?...

哈嘍&#xff0c;您好&#xff01;我是原呵呵&#xff0c;點點關注吧&#xff0c;更多精彩內容等著您小米很快就會展示了2021年的手機&#xff0c;該公司通常會在2月份推出該季節的首個旗艦&#xff0c;但新的小米米11已向前推進了幾個月&#xff0c;并成為了首個采用驍龍888處…

html 圖片墻效果,基于html5實現的圖片墻效果

溫馨提示&#xff1a;本信息由【金聰采編】搜集整理發布&#xff0c;版權歸原作者及發布者所有&#xff0c;您如有異議請 舉報 或者 版權申訴。本文實例講述了基于html5實現的圖片墻效果&#xff0c;分享給大家供大家參考。具體實現方法如下&#xff1a;這里有一組數據需要用圖…

python split函數 空格_python上手--10行代碼讀懂紅樓夢

取名10行代碼看懂紅樓夢&#xff0c;是將介紹使用python代碼來讀紅樓夢獲取其主要人物。這里的思想就是詞頻統計&#xff0c;通過分析紅樓夢小說文字中出現最多的詞語&#xff0c;來概括說明紅樓夢的核心人物和事情。實際上如果你能跟著往下看&#xff0c;就開始進入了自然語言…

計算機主機溫度,計算機的理想工作溫度和濕度分別是多少

電腦理想的工作溫度在10&#xff5e;35度&#xff0c;相對濕度為30&#xff05;&#xff5e;80&#xff05;。說明一點&#xff1a;這個溫濕度是沒有嚴格界定的。日常可以這樣理解&#xff1a;只要人待在那里感覺舒服&#xff0c;電腦也會覺得合適的。電腦對電源也有要求&#…

k8s 安裝nfs_K8s--06 K8s數據持久化

K8s數據持久化數據持久化 Volume介紹Volume介紹&#xff1a;Volume是Pad中能夠被多個容器訪問的共享目錄Kubernetes中的Volume不Pad生命周期相同&#xff0c;但不容器的生命周期丌相關Kubernetes支持多種類型的Volume&#xff0c;并且一個Pod可以同時使用任意多個VolumeVolume類…

matlab為自定義后綴文件設置圖標_【V3.0更新】| 這可能是全網最好用的文件管理神器了......

?點擊關注Excel表哥公眾號使用Excel制作自帶超鏈接的文件目錄索引確實可以很好地幫忙大家管理電腦里的文件。在此分享幾個各行各業朋友們的使用截圖&#xff1a;▲一個硬件工程師朋友的使用截圖▲一個醫院工作人員的數據統計文件管理▲學生朋友用來管理論文文獻▲VBA編程愛好者…

html dom透明度,HTML DOM Style overflow 屬性

Style overflow 屬性Style 對象定義和用法overflow 屬性設置或返回如何處理呈現在元素框外面的內容。語法設置 overflow 屬性&#xff1a;Object.style.overflow"visible|hidden|scroll|auto|inherit"返回 overflow 屬性&#xff1a;Object.style.overflow值描述visi…

#中隊列的數據結構_數據結構與算法拓展(一)

棧與隊列申明&#xff1a;由于篇幅限制&#xff0c;文章可能有些簡略&#xff0c;如果大家想要詳細了解&#xff0c;請一定要百度一下&#xff0c;并閱讀例題&#xff0c;完成習題緒言&#xff1a;計算機科學在過去的數十年內發展飛速&#xff0c;各種新穎的技術紛至沓來&#…

display屬性_Numpy知識點(1)講解實操安裝/屬性/數組創建/運算

# 1、安裝包# pip install numpy #原生python安裝# conda install numpy #Anaconda的安裝# 使用Numpyimport numpy as np a np.arange(15) #生成0-14的一維數組display(a)display( )和print( )都是打印,在大多數編程軟件上都使用print,jupyter notebook中我們可以使用d…

計算機英語短文互譯,中英文互譯的英語短文

在英語學習中,閱讀能力是學習者發展其它語言能力(聽、說、寫、譯)的基礎。閱讀能力的高低,不僅決定了學習者獲取知識和信息的水平,而且在一定程度上也反映出學習者綜合運用英語的能力。小編精心收集了中英文互譯的英語短文&#xff0c;供大家欣賞學習!中英文互譯的英語短文&…

springboot怎么設置多個路徑全部跳轉首頁_SpringBoot(四)—Web開發(二)

這篇文章準備來記錄一下一個restful風格小項目的流程&#xff0c;上篇文章為它做了一個基礎&#xff0c;如果有什么錯誤希望大家能夠指出。目錄首頁國際化登錄攔截器CRUD一、首頁在訪問localhost:8080/的時候&#xff0c;默認訪問首頁在自己配置的SpringMVC的配置類中Configura…

計算機英語六級,英語六級作文范文:計算機

英語六級考試時間越來越近了&#xff0c;所以在備考的時候就更要掌握技巧&#xff0c;勤加練習。在備考英語六級寫作時&#xff0c;學習一篇好的范文&#xff0c;會給復習帶來事半功倍的效果。Using a computer every day can have more negative than positive effects on you…

python軟件_Python自制照片美顏軟件~

下午被一個騙子惡心到了&#xff0c;本來聽公開課聽得好好的&#xff0c;搞得心情極差&#xff0c;于是就中斷了網課&#xff0c;聽聽音樂&#xff0c;寫一下文章吧&#xff01;前期準備①Python編譯環境以及Python代碼編輯器Pycharm的安裝&#xff1a;請在【微信公眾后臺】找到…

數據集怎么導出_PCA算法 | 數據集特征數量太多怎么辦?用這個算法對它降維打擊...

今天是機器學習專題的第27文章&#xff0c;我們一起來聊聊數據處理領域的降維(dimensionality reduction)算法。我們都知道&#xff0c;圖片格式當中有一種叫做svg&#xff0c;這種格式的圖片無論我們將它放大多少倍&#xff0c;也不會失真更不會出現邊緣模糊的情況。原因也很簡…