RabbitMQ的簡單應用

来源:http://www.cnblogs.com/zcg1051980588/archive/2017/11/16/7846131.html
-Advertisement-
Play Games

雖然後臺使用了讀寫分離技術,能夠在一定程度上抗擊高併發,但是如果併發量特別巨大時,主資料庫不能同時處理高併發的請求,這時資料庫容易宕機. 問題: 現在的問題是如何既能保證資料庫正常運行,又能實現用戶數據的入庫操作? 解決方案: 引入rabbitMQ技術: 說明: 當資料庫的訪問壓力過載時,這時會將過 ...


雖然後臺使用了讀寫分離技術,能夠在一定程度上抗擊高併發,但是如果併發量特別巨大時,主資料庫不能同時處理高併發的請求,這時資料庫容易宕機.

 

問題:

現在的問題是如何既能保證資料庫正常運行,又能實現用戶數據的入庫操作?

 

解決方案:

引入rabbitMQ技術:

說明:

當資料庫的訪問壓力過載時,這時會將過載以後的數據先保存到rabbitMQ中.其中的數據結構是隊列的形式,先進先出.這時資料庫從隊列中取數據執行.一直到隊列中的數據全部操作完成為止.

 

RabbitMQ就是消息的中間件.

RabbitMQ介紹:

RabbitMQ性能分析:

 

1.MSMQ:是微軟的產品  應用於.net框架

2.ActiveMQ:是apache的產品 做業務用圖廣泛

3.RabbitQM:是愛立信的產品(早期手機生產廠商)基於erlang語言(函數式編程大數據  scala語言)

4.ZeroMQ:大數據中應用廣泛,缺點容易丟失數據.但是業務系統中使用率較少

5.KafkaMQ:大數據項目中使用,50萬/秒  現在主流

 

 

5.RabbitMQ環境搭建:

1.配置JDK:

2.固定虛擬機IP地址:

 

3.連接虛擬機:

編輯文件跳轉路徑:

Vim  go

Cd /usr/local/src

 

2.安裝rabbitMQ:

1.新建文件rabbitmq

/usr/local/src/rabbitmq

2.將安裝文件導入

 

3.安裝rabbitMQ

 

4.開啟遠程用戶訪問:

將文件複製到指定目錄下:

cp /usr/share/doc/rabbitmq-server-3.6.1/rabbitmq.config.example  /etc/rabbitmq/rabbitmq.config

 

修改新複製的文件64行

 

1.將%%去掉

2.將,號去掉

修改為:

 

 

5.開啟rabbitMQ:

執行命令:

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的埠

或者關閉防火牆

 

7.啟動/停止服務

service rabbitmq-server start  啟動

service rabbitmq-server stop 停止

service rabbitmq-server restart 重啟

 

8.遠程登錄:

訪問:

http://192.168.154.137:15672/

用戶名和密碼都是guest

 

9.視圖解析:

10.建立管理員:

 

11.構建虛擬主機:

 

11.構建虛擬主機:

6.rabbitMQ的工作模式:

1.簡單模式:

 

p:proverder 生產者

c:consumer  消費者

紅色部分:隊列    先進先出

原理說明:

生產者負責向隊列中添加消息.消費者負責消費隊列中的消息.

消費者通過監聽器,實時監控消息隊列.如果消息隊列中有消息則消費,如果沒有消息 則等待消息.

 

2.測試代碼:

1.定義Connection

 

1.1.定義生產者

 

 

3.定義消費者:

 

2.工作模式:

 

原理說明:

生產者為消息隊列中生產消息,多個消費者爭搶執行權利,誰搶到誰執行.

 

實用場景:秒殺業務 搶紅包等

 

 

測試代碼:

 

3.發佈訂閱模式:

 

x:exchange 交換機

P:表示生產者

C1-2:表示多個消費者

 

原理說明:

當生產者生產消息後,先將消息發往交換機.交換機再將消息發往訂閱了當前消息的隊列,再次有各個隊列的消費者執行.

類似於 廣播

定義消費者::

4.路由模式:

x:表示交換機   type=direct  表示路由

路由模式中,需要定義路由key

 

原理說明:

1.當生產者發佈消息時,會定義指定的路由key 例如 key:error

2.這時交換機會根據路由key發往滿足條件的隊列中.如果隊列中沒有符合條件的路由key將不能執行該消息.

 

 

5.主題模式:

 

Type:topic  表示主題模式

 

  • * (star) can substitute for exactly one word.
  • # (hash) can substitute for zero or more words. 
  • 有坑 效果一樣

 

7.訂單實現RabbitMQ

1.引入配置文件:

classpath:jdbc.propertiesclasspath:env.properties /hp月n、 口山閏廷比二曰站叩四瞿二月當“習 classpath:rabbitmq.properties IUe> /value>" v:shapes="圖片_x0020_42">

 

2.引入生產者

1.引入配置文件

2.定義發送端

 

3.發送端代碼

通過代碼相rabbitmq中發送數據

4.定義接收端:

引入配置文件

 

5.定義接收端:

6.測試成功

 源碼請加我QQ :1051980588


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一般情況下我們將tomcat做成服務時都會指定服務的名稱:service install ywbase 安裝後, 服務名稱是ywbase. 這時候用tomcat7w.exe配置jdk記憶體會出現指定的服務未安裝. 解決的方案: 將tomcat7w.exe 改成 ywbasew.exe 執行就OK了 ...
  • 題目描述: Find the sum of all left leaves in a given binary tree. 例子: 解題思路: 用遞推對二叉樹進行遍歷,判斷是否為末枝的左子葉,然後將所有的末枝的左子葉相加(不要忘了考慮空指針的情況) 代碼: 解題收穫: 對於C語言鏈表的使用還是有些不 ...
  • 1.http://blog.csdn.net/zhangchaoyi1a2b/article/details/77510138 2.use Mavn 3.on the pom.xml <dependencies> <dependency> <groupId>org.apache.logging.lo ...
  • 採集美女模特圖片庫時,需要對標題進行分詞,找了好久,終於找到了一個不錯的分詞庫 分詞系統簡介:PHPAnalysis分詞程式使用居於unicode的詞庫,使用反向匹配模式分詞,理論上相容編碼更廣泛,並且對utf-8編碼尤為方便。 由於PHPAnalysis是無組件的系統,因此速度會比有組件的稍慢,不 ...
  • 作者:NiceCui 本文謝絕轉載,如需轉載需徵得作者本人同意,謝謝。 本文鏈接:http://www.cnblogs.com/NiceCui/p/7846812.html 郵箱:[email protected] 日期:2017-11-16 平時寫代碼有時會常用到一些處理日期的邏輯,自己寫了一個工 ...
  • 產品分類管理的html頁面之前忘記做了,這次附件里補上。 好了先上圖 從頁面效果圖來看,我們需要開發列表獲取介面、添加介面、單條記錄獲取介面、編輯介面和刪除介面 對於產品分類列表,我們將使用jqgrid前端表格框架,jqgrid與介面交互時,它會提交頁面索引、頁面大小、排序欄位名以及順序還是倒序排序 ...
  • 一直都以為C/C++中形如 這樣的函數聲明其意義就是一個參數 void(沒有參數)的函數。然而今天在看C++的時候突然看到這麼一句: 這一點老師並沒有講到,學校教科書里也沒有提到,帶著好奇心,我特意試了一下 test.c 這也解釋了為什麼主函數要寫成這樣的原因 ...
  • redis集群的特點: 1.機器多,能夠保證redis伺服器出現問題後,影響較小 2.自備主從結構,自動的根據演算法劃分主從結構.動態的實現 3.能夠根據主從結構自動的實現高可用 4.實現數據文件的備份 3.Redis集群的搭建步驟: 準備9台伺服器 3主6從 一個主機下有2個子節點 7000-700 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...