日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot利用redis作为消息队列mq使用

發布時間:2023/12/29 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot利用redis作为消息队列mq使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先吐個槽:經常看到有人對不同得消息隊列做各種各樣得評價以及所謂得性能測試,評估選型等等,豈不知脫離任何業務得技術評估都是瞎扯淡。(公司實際業務技術場景不提,滿口胡說kafa怎么樣,activemq怎么樣,rabbitmq怎么樣。rocketmq怎么樣),試問目前有多少公司業務能夠出現10w+并發吞吐量?所以我對架構得技術選型都會緊密結合相關業務具體分析。舉個例子

公司只有登入短信驗證碼發送得業務在那邊大談,該使用百萬級mq還是十萬級mq,殊不知公司得客戶總量有沒有1w+,使用redis輕松就能搞定得業務。廢話不多說切入正題:

眾所周知springboot提供了redis組件得繼承,我們可以輕松得使用StringRedisTemplate 對redis進行操作。

消息隊列遵循先進先出得原則 即FIFO(first in? first out)。那么在redis中就可以表示為? leftPush? rightPop 左進右出(或者右進左出都行)。

在出隊列得時候 假如程序異常了 那么是不是意味著數據就丟失了呢,所以這里還應該用一種策略,保障數據安全性,以下提供兩種方案

1.可以將數據取出后序列化到本地文件。(捕獲程序異常,當程序出現異常時將數據序列化至文件,待修復完成后再從本地文件反序列化回來繼續執行。)

2.第二種方案,模仿確認機制,將數據取出后,再備份一份數據到備份隊列。數據處理成功發起成功標志 移除備份數據,處理失敗發起失敗標志 將備份隊列數據重新歸隊。

這里講第二種方案。很顯然StringRedisTemplate 已經給我們想得很全面了,它提供了一個方法,

redisTemplate.opsForList().rightPopAndLeftPush("aaa","bbb");//從aaa隊列彈出一條數據,并備份至bbb隊列

這邊使用?rightPopAndLeftPush 即備份隊列為左進,那么移除得時候就需要右出。

1.也就是說當程序邏輯處理為成功,再同步執行

redisTemplate.opsForList().rightPop("bbb");//將數據從備份隊列移除

2.失敗

redisTemplate.opsForList().rightPopAndLeftPush("bbb","aaa");//將數據重新入隊到aaa隊列

好了根據以上邏輯 相信大家可以自己寫出相關代碼了,具體實現代碼我就不貼了。

總結

以上是生活随笔為你收集整理的springboot利用redis作为消息队列mq使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。