基于RabbitMQ的簡單應(yīng)用(詳解)
雖然后臺使用了讀寫分離技術(shù),能夠在一定程度上抗擊高并發(fā),但是如果并發(fā)量特別巨大時,主數(shù)據(jù)庫不能同時處理高并發(fā)的請求,這時數(shù)據(jù)庫容易宕機(jī)。
問題:
現(xiàn)在的問題是如何既能保證數(shù)據(jù)庫正常運行,又能實現(xiàn)用戶數(shù)據(jù)的入庫操作?
解決方案:
引入rabbitMQ技術(shù):
說明:
當(dāng)數(shù)據(jù)庫的訪問壓力過載時,這時會將過載以后的數(shù)據(jù)先保存到rabbitMQ中。其中的數(shù)據(jù)結(jié)構(gòu)是隊列的形式,先進(jìn)先出。這時數(shù)據(jù)庫從隊列中取數(shù)據(jù)執(zhí)行。一直到隊列中的數(shù)據(jù)全部操作完成為止。
RabbitMQ就是消息的中間件。
RabbitMQ介紹:
RabbitMQ性能分析:
1.MSMQ:是微軟的產(chǎn)品 應(yīng)用于.net框架
2.ActiveMQ:是apache的產(chǎn)品 做業(yè)務(wù)用圖廣泛
3.RabbitQM:是愛立信的產(chǎn)品(早期手機(jī)生產(chǎn)廠商)基于erlang語言(函數(shù)式編程大數(shù)據(jù) scala語言)
4.ZeroMQ:大數(shù)據(jù)中應(yīng)用廣泛,缺點容易丟失數(shù)據(jù).但是業(yè)務(wù)系統(tǒng)中使用率較少
5.KafkaMQ:大數(shù)據(jù)項目中使用,50萬/秒 現(xiàn)在主流
5.RabbitMQ環(huán)境搭建:
1.配置JDK:
2.固定虛擬機(jī)IP地址:
3.連接虛擬機(jī):
編輯文件跳轉(zhuǎn)路徑:
Vim go
Cd /usr/local/src
2.安裝rabbitMQ:
1.新建文件rabbitmq
/usr/local/src/rabbitmq
2.將安裝文件導(dǎo)入
3.安裝rabbitMQ
4.開啟遠(yuǎn)程用戶訪問:
將文件復(fù)制到指定目錄下:
cp /usr/share/doc/rabbitmq-server-3.6.1/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
修改新復(fù)制的文件64行
1.將%%去掉
2.將,號去掉
修改為:
5.開啟rabbitMQ:
執(zhí)行命令:
rabbitmq-plugins enable rabbitmq_management
表示啟動成功
6.開放端口15672和5672
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
訪問rabbitMQ的控制臺
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
程序連接rabbitMQ的端口
或者關(guān)閉防火墻
7.啟動/停止服務(wù)
service rabbitmq-server start 啟動
service rabbitmq-server stop 停止
service rabbitmq-server restart 重啟
8.遠(yuǎn)程登錄:
訪問:
用戶名和密碼都是guest
9.視圖解析:
10.建立管理員:
11.構(gòu)建虛擬主機(jī):
11.構(gòu)建虛擬主機(jī):
6.rabbitMQ的工作模式:
1.簡單模式:
p:proverder 生產(chǎn)者
c:consumer 消費者
紅色部分:隊列 先進(jìn)先出
原理說明:
生產(chǎn)者負(fù)責(zé)向隊列中添加消息.消費者負(fù)責(zé)消費隊列中的消息.
消費者通過監(jiān)聽器,實時監(jiān)控消息隊列.如果消息隊列中有消息則消費,如果沒有消息 則等待消息.
2.測試代碼:
1.定義Connection
1.1.定義生產(chǎn)者
3.定義消費者:
2.工作模式:
原理說明:
生產(chǎn)者為消息隊列中生產(chǎn)消息,多個消費者爭搶執(zhí)行權(quán)利,誰搶到誰執(zhí)行.
實用場景:秒殺業(yè)務(wù) 搶紅包等
測試代碼:
3.發(fā)布訂閱模式:
x:exchange 交換機(jī)
P:表示生產(chǎn)者
C1-2:表示多個消費者
原理說明:
當(dāng)生產(chǎn)者生產(chǎn)消息后,先將消息發(fā)往交換機(jī).交換機(jī)再將消息發(fā)往訂閱了當(dāng)前消息的隊列,再次有各個隊列的消費者執(zhí)行.
類似于 廣播
定義消費者::
4.路由模式:
x:表示交換機(jī) type=direct 表示路由
路由模式中,需要定義路由key
原理說明:
1.當(dāng)生產(chǎn)者發(fā)布消息時,會定義指定的路由key 例如 key:error
2.這時交換機(jī)會根據(jù)路由key發(fā)往滿足條件的隊列中.如果隊列中沒有符合條件的路由key將不能執(zhí)行該消息.
5.主題模式:
Type:topic 表示主題模式
- * (star) can substitute for exactly one word.
- # (hash) can substitute for zero or more words.
- 有坑 效果一樣
7.訂單實現(xiàn)RabbitMQ
1.引入配置文件:
classpath:jdbc.propertiesclasspath:env.properties /hp月n、 口山閏廷比二曰站叩四瞿二月當(dāng)“習(xí) classpath:rabbitmq.properties IUe> /value>" v:shapes="圖片_x0020_42">
2.引入生產(chǎn)者
1.引入配置文件
2.定義發(fā)送端
3.發(fā)送端代碼
通過代碼相rabbitmq中發(fā)送數(shù)據(jù)
4.定義接收端:
引入配置文件
5.定義接收端:
6.測試成功
以上這篇基于RabbitMQ的簡單應(yīng)用(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計模式之觀察者模式(Observer模式)
這篇文章主要介紹了Java設(shè)計模式之觀察者模式(Observer模式),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04SpringBoot中的multipartResolver上傳文件配置
這篇文章主要介紹了SpringBoot中的multipartResolver上傳文件配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢
這篇文章主要介紹了Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Spring實現(xiàn)控制反轉(zhuǎn)和依賴注入的示例詳解
這篇文章主要為大家詳細(xì)介紹IoC(控制反轉(zhuǎn))和DI(依賴注入)的概念,以及如何在Spring框架中實現(xiàn)它們,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08SpringBoot深入刨析數(shù)據(jù)層技術(shù)
這篇文章主要介紹了SpringBoot數(shù)據(jù)層技術(shù)的解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08SpringBoot實現(xiàn)簡易支付寶網(wǎng)頁支付功能
小編最近實現(xiàn)一個功能基于springboot程序的支付寶支付demo,非常不錯適合初學(xué)者入門學(xué)習(xí)使用,今天把SpringBoot實現(xiàn)簡易支付寶網(wǎng)頁支付功能的示例代碼分享給大家,感興趣的朋友參考下吧2021-10-10