第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

RabbitMQ 入門教程

RabbitMQ 簡介
RabbitMQ 簡介

RabbitMQ 簡介

1. 前言

大家好,今天讓我們開始一個新專題 — RabbitMQ。提起 RabbitMQ ,相信大家并不是很陌生,在基于任何一種語言框架所開發(fā)的項目中,大大小小都有可能用到。關(guān)于 RabbitMQ ,想必使用過的同學(xué)都有所耳聞,它的知識點完全可以出一本書來專門進行介紹,如果單靠本專題是介紹不完的。

本專題我們重點介紹 RabbitMQ 中的基本概念語法、基本術(shù)語、基本使用方法等一系列基本內(nèi)容,不會涉及到很高級的用法。

在將基本內(nèi)容全部講解完畢后,我會結(jié)合我的經(jīng)驗以一個完整項目的形式,來為大家?guī)砥髽I(yè)級 RabbitMQ 實戰(zhàn)內(nèi)容,旨在幫助大家,在掌握 RabbitMQ 基本知識體系之后,可以真正地將 RabbitMQ 應(yīng)用到自己的實際工作中去。

本文我們主要先介紹一下 RabbitMQ 是什么?有哪些特性?優(yōu)缺點在哪?為什么我們需要在項目開發(fā)中應(yīng)用 RabbitMQ ?

2. 什么是 RabbitMQ ?

什么是 RabbitMQ 呢?在 RabbitMQ 官網(wǎng)中是這么介紹的:

一場使用消息進行通信的高可用和數(shù)據(jù)安全的在線會議. —官網(wǎng)

上述定義是官網(wǎng)的抽象描述,添加了一些官網(wǎng)的色彩在里面,同學(xué)們可能不太理解,下面我對定義進行一些必要的解釋。

通俗來講,我們可以這樣理解:RabbitMQ 是一種消息通信方式,采用消息隊列的形式,來將消息進行傳遞與發(fā)送,RabbitMQ 在通過消息隊列傳遞消息時,可以保證消息的高可用性、消息中數(shù)據(jù)的安全性。

也就是說,RabbitMQ 是一種高可用且數(shù)據(jù)安全的消息通信中間件。

3. 為什么要使用 RabbitMQ

那么我們?yōu)槭裁匆褂?RabbitMQ 呢?

3.1 通俗易懂的配置項

RabbitMQ 這一中間件并不像 Hystrix 那樣,如果需要使用,就要先進行集成。RabbitMQ 本身是依賴于 erlang 語言,并不是 Java 語言,所以,如果我們的電腦上具備了 erlang 語言的環(huán)境,就可以使用 RabbitMQ 了,這一點是 Hystrix 等其他工具不具備的特性。

正是由于上述特性存在的原因,所以,RabbitMQ 的使用就相當(dāng)靈活。由于本套教程是依賴于 Spring Boot 框架來介紹 RabbitMQ 的,所以,我們需要將 RabbitMQ 集成到 Spring Boot 框架中去。

RabbitMQ 針對不同的集成環(huán)境,提供了很多種不同的集成實現(xiàn)方案,而無論是哪一種集成方案,其配置項都不是很多,我們只需要將最基本的幾個主要配置項進行簡單配置,就可以使用 RabbitMQ 了。

在將 RabbitMQ 依賴引入到項目中后,由于 Spring Boot 框架的特性,我們不需要進行繁瑣的 xml 文件的配置,只需要將和 RabbitMQ 相關(guān)的配置項以一個配置類的形式,或直接將其配置到配置源文件中去即可。

3.2 安全可靠的投遞性

RabbitMQ 在進行消息傳遞的時候,會在其容器中進行一些必要的檢測,來保證消息間通信的可靠性,具體 RabbitMQ 是怎樣進行消息間通信的檢測的,我們在本套課程中就不再介紹了,因為這涉及到 RabbitMQ 的底層實現(xiàn),和課程初衷是不符的。

現(xiàn)在我們只需要這樣理解就行了:當(dāng)我們將一條消息放入到 RabbitMQ 中時,RabbitMQ 首先會檢測消息所處的環(huán)境,然后 RabbitMQ 會將該條消息通過一定的加密算法進行加密,最后,通過 RabbitMQ 的消息通道,將消息投遞到它該去的地方。

3.3 近于實時的補償性

我們都知道,什么事情都不可能是十全十美的。拋開 RabbitMQ 不說,在互聯(lián)網(wǎng)行業(yè)中的其他工具,也不能百分百保證每時每刻都在正常工作,更何況是涉及到消息通信的工具。RabbitMQ 在傳遞消息時,由于一些客觀原因或者是其本身的原因,可能會出現(xiàn),在有大批量消息傳遞時,所有的消息不能百分百傳遞到目的地的問題。

RabbitMQ 在設(shè)計之初就考慮到了這個問題的出現(xiàn),所以,RabbitMQ 提供了內(nèi)置的消息補償機制,這里我們簡單做一下介紹。

當(dāng)存在大批量的消息都需要經(jīng)過 RabbitMQ 來投遞時,RabbitMQ 會將這些消息劃分成若干組,然后通過為組設(shè)置順序的方式,來依次投遞這些消息。如果在任意一組中,出現(xiàn)了消息未能投遞到目的地的現(xiàn)象,那么, RabbitMQ 會將該條消息進行短暫的存儲,待其他消息都到達目的地后,RabbitMQ 會重新將該條消息進行投遞,然而,這個過程執(zhí)行的時間是微乎其微的,幾乎近于實時。

3.4 考慮周全的監(jiān)控性

在進行消息間投遞工作時,如果能夠在后臺監(jiān)控到每條消息的投遞狀況,想必是再好不過了。

鑒于此,RabbitMQ 為我們內(nèi)置了消息監(jiān)控臺,RabbitMQ 內(nèi)置的消息監(jiān)控臺可以看到每一條消息的健康情況,其為我們提供了圖表形式、表格形式等,來很好地為我們展示每條信息地投遞狀況,包括但不限于:消息何時發(fā)送的、使用的是哪個通道、消息何時被接收的等關(guān)鍵監(jiān)控屬性,可以很好地為我們監(jiān)控每條消息地投遞情況。

總結(jié):

RabbitMQ 其實就是為了解決消息間通信而誕生的一款消息中間件,其依賴于 erlang 語言,并廣泛應(yīng)用于 Spring Boot 框架,通過提供一系列必要的消息保障機制,來保證消息間可以安全可靠的進行通信。

4. RabbitMQ 的版本說明

RabbitMQ 從 2006 年誕生,到現(xiàn)在已經(jīng)有 14 個年頭了,在這中間已經(jīng)迭代升級了很多版本,目前,最新的版本是 v3.8.8,每個版本都有不同的特性,下面介紹一個主要使用的版本和新版本的特性。

  • V3.5.X - 3.6.X:RabbitMQ 最初的流行版本,也是互聯(lián)網(wǎng)公司最早采用的版本,現(xiàn)在還有一部分互聯(lián)網(wǎng)公司在使用;

  • V3.6.X - 3.7.X: 互聯(lián)網(wǎng)公司普遍使用的版本,也是使用人數(shù)較多的版本,較之前版本而言,對一些內(nèi)置的特性做了優(yōu)化;

  • V3.8.X: 目前發(fā)布的最新系列版本,也是大廠用的最多的版本,最新版本于 2020 年 9 月 3 日發(fā)布,最新版本較之前發(fā)布的版本更好用、更穩(wěn)定、配置更靈活。

Tips: 鑒于此,本套課程采用 V3.8.5 版本進行講解,請同學(xué)們務(wù)必和老師所使用的版本保持一致,以避免后續(xù)因為版本而引起的不必要的問題,以及一些兼容性問題。

5. RabbitMQ 的優(yōu)點

  • 配置簡單 : 支持通過配置類、yml 配置源文件的形式來對 RabbitMQ 進行配置。

  • 安全可靠 : 提供了豐富的消息保障措施,例如,消息加密、消息投遞補償、消息檢測等,保證我們消息間安全可靠地投遞。

  • 監(jiān)控周全 : 提供了豐富的后臺監(jiān)控策略,通過不同的表現(xiàn)方式,來為我們提供消息的健康狀況,方便我們監(jiān)控。

6. RabbitMQ 的缺點

  • 有一定的不穩(wěn)定性 : 經(jīng)過長時間的使用可以得出,RabbitMQ 有時會出現(xiàn)消息補償不及時、發(fā)送通道卡死等現(xiàn)象,但這不是經(jīng)常發(fā)生的。

  • 速度還不是最快的 : 一般而言,RabbitMQ 本身的消息投遞速度已經(jīng)可以滿足現(xiàn)實工作中絕大多數(shù)業(yè)務(wù)場景,在遇到復(fù)雜的業(yè)務(wù)場景時,比如,一次需要傳遞上萬條數(shù)據(jù)時,消息間通信的速度可能就會達不到預(yù)期了,就需要我們對消息傳遞進行優(yōu)化。

7. 學(xué)習(xí)基礎(chǔ)

  1. 學(xué)習(xí)本門課程,首先需要對 Java 的 Spring Boot 框架有較為熟練的使用經(jīng)驗,并對 Maven 有一定的了解。

  2. 對 RabbitMQ 感興趣的同學(xué),或者對 RabbitMQ 消息中間件有簡單了解或使用的同學(xué)。

  3. 知道什么是消息,并對消息間通信的基本概念有簡單了解。

8. 總結(jié)

本小節(jié)詳細介紹了 RabbitMQ 這一消息中間件,從 RabbitMQ 的定義開始,到 RabbitMQ 不同版本間特性差異的闡述,再到最后 RabbitMQ 的優(yōu)缺點總結(jié)對比。

希望沒有接觸過 RabbitMQ 的同學(xué),通過對本節(jié)內(nèi)容的學(xué)習(xí)可以簡單了解什么是 RabbitMQ ,以及它能為我們做哪些事情,本篇是整套課程的開端,希望各位同學(xué)能夠持續(xù)關(guān)注,謝謝。