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

全部開發(fā)者教程

RabbitMQ 入門教程

RabbitMQ 簡介
RabbitMQ 簡介

RabbitMQ 中的冪等性介紹

1. 前言

Hello,大家好。本小節(jié)為大家介紹冪等性的相關概念,以及在 RabbitMQ 中,冪等性是如何體現的。對 RabbitMQ 中的冪等性進行簡單了解之后,有利于我們更好地掌握 RabbitMQ 中消息的工作理念和工作思路,話不多說,讓我們直入正題吧。

本節(jié)主要內容:

  • 什么是冪等性;

  • RabbitMQ 中的冪等性概念;

2. 什么是冪等性 ?

冪等性這一名詞,誕生在數學領域,其目的就是為了描述一種函數與數值變量間的統一對等關系。數學領域中的冪等性比較抽象,這里就不給各位同學介紹了,感興趣的同學可以課下了解一下。隨著時代的發(fā)展,冪等性這一概念又被應用到了諸多除數學領域外的領域之中,并且發(fā)揮著重要作用,針對計算機行業(yè)來說,冪等性又是如何描述的呢?

冪等性這一概念,關鍵就在冪等這兩個字上,即保持一種等價關系,在計算機中,冪等主要是對系統做一個約束,即,對于同一個系統,在相同條件下,一次對系統的請求和重復多次對系統的請求,對系統所造成的影響都是一樣的。

我們來看一下這句話所描述的含義:在同一個系統中,表示的是我們所開發(fā)的應用程序系統;在相同條件下,表示的是我們所開發(fā)的應用程序都位于同一個運行環(huán)境中;對系統的請求,表示的是在相同條件下用戶對我們的應用程序所發(fā)起的服務請求;對系統所造成的影響都是一樣的,表示的是,無論是一個請求還是多個相同的請求,該請求對系統所造成的影響都是一樣的。

我們重點需要理解的是,在相同條件下,一個或者多個相同的請求,在重復對系統進行請求之后,對系統所造成的影響都是一樣的。這里我來舉個例子:比如我們在網上進行購物,挑選好要買的商品之后進行下單,并進行了付款,不巧的是,當我們點擊了確認支付后,收到了銀行發(fā)來的扣款短信,但是沒有收到網購平臺支付成功的提示,于是我們又重新對該訂單進行了支付,這最終造成了我們對于同一個訂單確支付了兩筆的現象。

然而這種現象是不應該出現的,如果網購平臺對支付這塊的功能做了冪等性的限制,那么我們在支付完第一筆后,再次進行支付時,網購平臺會提示我們該筆訂單已經支付過了,不能重復支付,而支付成功的提示會在等待一定的時間之后發(fā)給我們,這才是合理的處理結果。

計算機中的冪等性就是專門針對此種現象而衍變出來的,類似的場景還有很多,比如我們要對文章進行點贊,我們就會約束同一用戶同一時刻只記錄一次點贊結果等等。我們只需要知道,計算機中的冪等性就是為了保證,在相同條件下,同一個請求的一次或多次請求,對系統所造成的影響都是一樣的就行了。

計算機中冪等性我們知道了,那么在 RabbitMQ 中冪等性又是如何體現的呢,接下來讓我們一探究竟。

3. RabbitMQ 中的冪等性概念

我們知道,在 RabbitMQ 中,充當主角的也就是消息了,而這里所稱的消息指的就是我們應用程序中的數據。我們還知道,RabbitMQ 實際就是處理消息的一款中間件,主要處理消息的發(fā)送、消息的接收兩大模塊,消息作為 RabbitMQ 中的主角,想必一定會對消息的發(fā)送和接收做綜合方面的處理,即要保障消息準備被發(fā)送出去,也要保障消息準確被接收了。

生產端的冪等性體現:

在 RabbitMQ 中,保障消息準確被發(fā)送,以及保障消息準確被接收的這些保障措施,就用到了計算機中的冪等性。

對于保障消息準確被發(fā)送而言,我們應用程序中的數據,一旦被發(fā)送到 RabbitMQ Server 中后,無論 RabbitMQ Server 有沒有接收到這一消息,都會返回給客戶端一個接收消息的應答,來告訴客戶端消息在 RabbitMQ Server 中的一個狀態(tài)。

如果消息沒有被 RabbitMQ Server 接收到,那么客戶端也無需進行消息重復發(fā)送的操作,RabbitMQ Server 本身會自動將該消息進行重復發(fā)送,直到消息被 RabbitMQ Server 所接收,并返回消息已經發(fā)送的確認應答。

相反,如果消息被 RabbitMQ Server 接收到了,那么客戶端無須進行消息的重復發(fā)送,如果此時我們向 RabbitMQ Server 中再次發(fā)送一條同樣的消息,那么 RabbitMQ Server 會拋出消息已存在異常,這是冪等性的一種體現。

消費端的冪等性體現:

對于保障消息準備被接收而言,存在于 RabbitMQ Server 中的消息,一旦被消費者所獲取,那么這個消費者就不能將消息再次發(fā)送出去,同時該消息只能被當前的消費者消費,其他的消費者均不能獲取到該消息并消費。和消息發(fā)送一樣,無論消費者有沒有將該消息進行消費,都會給客戶端返回一個確認應答。

如果消息沒有被當前的消費者所消費,那么 RabbitMQ Server 會將該消息置于另一個消息隊列當中,等待此時刻的所有消息都已經被消費之后,再回過頭來對該消息進行消費,直到消費者正常消費掉了該消息。

相反,如果消息被當前的消費者所消費,那么,當生產者生產出了一個相同的消息之后,消費者也不會再對該消息進行消費了,因為同樣的消息,消費者已經進行了消費,并返回了信息消費的確認性應答,這是冪等性的另一種體現。

而無論是生產端還是消費端,RabbitMQ 都將冪等性這一概念應用到了實際的消息處理中,正式由于冪等性的應用,RabbitMQ 在消息處理上才會保證消息可以 100% 的投遞到 Server 端,以及消費者可以不重復的對消息進行正確的消費,并且都會返回消息發(fā)送和消費的確認性應答。

4. 小結

本小節(jié)對冪等性的概念,以及冪等性如何在 RabbitMQ 中體現的,做了詳細的闡述。從統一角度上的冪等性概念開始,到計算機領域中冪等性概念的規(guī)定,最后到 RabbitMQ 中冪等性的不同種體現結束,詳細闡述了冪等的概念,以及 RabbitMQ 對消息處理進行冪等操作的相關措施,旨在幫助各位同學可以清楚的理解什么是冪等性、冪等性中的重點是什么,以及 RabbitMQ 是如何應用冪等的概念來處理消息的發(fā)送和消費的。

冪等性這一概念貫穿 RabbitMQ 消息處理的始終,所以,了解什么是冪等性,以及冪等性在 RabbitMQ 中的應用是理解 RabbitMQ 中處理消息的基礎,希望同學們都可以對冪等性有自己的見解,這是最重要的。