訊息佇列 mq 是什麼

2025-01-03 11:35:31 字數 3518 閱讀 6670

1樓:花楹說生活

生產者先將訊息投遞乙個叫佇列的容器中,然後再從這個容器中取出訊息,最後再**給消費者。

訊息佇列是 microsoft 的訊息處理技術,它在任何安裝 microsoft windows 的計算機組合中,為任何應用程式提供訊息處理和訊息佇列功能,無論這些計算機是否在同乙個網路上或者是否同時聯機。

訊息佇列網路是能夠相互間來回傳送訊息的任何一組計算機。網路中的不同計算機在確保訊息順利處理的過程中扮演不同的角色。它們中有些提供路由資訊以確定如何傳送訊息,有些儲存整個網路的重要資訊,而有些只是傳送和接收訊息。

訊息佇列的型別介紹:

訊息佇列目前主要有兩種型別:posix訊息佇列以及系統v訊息佇列,系統v訊息佇列目前被大量使用。每個訊息佇列都有乙個佇列頭,用結構struct msg_queue來描述。

佇列頭中包含了該訊息佇列的大量資訊。包括訊息佇列鍵值、使用者id、組id、訊息佇列中訊息數目等等。

訊息佇列就是乙個訊息的連結串列,可以把訊息看作乙個記錄,具有特定的格式以及特定的優先順序。對訊息佇列有寫許可權的程序可以向訊息佇列中按照一定的規則新增新訊息;對訊息佇列有讀許可權的程序則可以從訊息佇列中讀走訊息。訊息佇列是隨核心持續的。

2樓:bonree博睿資料

mq全稱為message queue,即訊息佇列,是一種跨程序的通訊機制,用於上下游傳遞訊息。

使用mq的原因:

1. 實現分散式系統之間的解耦呼叫

在分散式系統中,經常會出現乙個服務會有多個消費端呼叫,而且可能每個消費方需要接入的邏輯不一致,又或者隨著專案的不斷發展,我們需要介面的未來維護和發展確定一套可擴充套件的規範,引入訊息系統,在處理過程中間插入了乙個隱含的、基於資料的介面層,兩邊的處理過程都要實現這一介面。這允許你獨立的擴充套件或修改兩邊的處理過程,只要確保它們遵守同樣的介面約束。

2. 實現非同步呼叫

有時候我們會遇到這樣的場景,使用者在客戶端提交了乙個請求,後端處理這個請求的業務相對比較複雜,如果這個請求使用的是同步呼叫,客戶端就會出現傳送請求後過了很久才相應的情況,這對使用者體驗來說是十分致命的。如果說使用者並不關心請求是否處理,對於一些耗時的非事務性的業務處理,我們可以使用mq非同步請求的方式,將處理資訊放入佇列,由後端監聽佇列自行處理,在將訊息存入佇列後直接返回客戶端相應,加快響應速度。

3. 削峰(佇列),解決高併發問題

例如秒殺活動,可能在短時間內會有很大請求同時到後端,如果後端對每個請求都執行業務操作,例如查詢資料庫和寫資料庫,會造成伺服器壓力過大,同時,在同一時間進行大量資料庫操作,可能會出現資料異常,我們可以使用mq實現緩衝,將所有請求先放入訊息佇列中,服務端每次處理業務先從訊息佇列獲取。

常用的訊息佇列

3樓:清寧時光

一、redis訊息佇列和kafka訊息佇列的比較。

1、redis作為訊息佇列。

redis的pub-sub模式非常像西式快餐一樣,快產快消,全都是因為redis是使用記憶體來做存取,所有你生產的訊息立馬會被消費者一次性全部處理掉,並且沒有留下任何痕跡, 同時因為記憶體總是寶貴的,所以記憶體上會有限制,當凳高生產者以及消費者上沒團來的時候也會對redis的效率,還有redis在處理釋出和消費big size(10k+的檔案)的資料的時候會表現出無法忍受的緩慢。

如果有以下場景可以考慮使用redis作為訊息佇列:

a、如果你的需求是快產快消的即時消費場景,並且生產的訊息立即被消費者消費掉。

b、如果速度是你十分看重的,比如慢了一秒好幾千萬這種。

c、如果允許出現訊息丟失的場景。

d、如果你不需要系統儲存你傳送過的訊息,做到來無影去無蹤。

e、需要處理的資料量並不是那麼巨大。

2、kafka作為訊息佇列。

kafka的設計精妙,支援分散式,高可用的部署,並且對乙個大的佇列採用分成多個partition(分割槽),來提高訊息入隊的吞吐量,分而治之的思想。 並且消費的時候支援group的概念,能夠支援多個客戶端消費同個佇列,並且乙個group中可以增加consumer的數量來擴充套件消費的處理量。

kafka不熟生產者數量的影響,因為吞吐量足夠支撐,即使在廉價的單機伺服器上也可以有10萬每秒的訊息傳輸量,並且消費者是想什麼枯粗橘時候消費都可以,訊息它就在那裡,十分靈活,不用擔心來無影去無蹤的恐慌。能把訊息持久化,並以一定的策略(例如一定時間內刪除,或者到達多大容量的時候清空)

當有一下場景的時候你可以考慮使用kafka作為訊息佇列:

a、如果你想要穩定的訊息佇列。

b、如果你想要你傳送過的訊息可以保留一定的時間,並不是無跡可尋的時候。

c、如果你無法忍受資料的丟失。

d、如果速度不需要那麼的快。

e、如果需要處理資料量巨大的時候。

4樓:霓脦那些

訊息佇列(英語:message queue)是一種程序間通訊或同一程序的不同執行緒間的通訊方式,軟體的貯列用來處理一系列的輸入,通常是來自使用者。

訊息佇列提供了非同步的通訊帶謹協議,每乙個貯列中的紀錄包含詳細說明的資料,包含發生的時間,輸入裝置的種類,以及特定的輸入引數,也就是說:訊息的傳送者和接收者不需要同時與訊息佇列互動。訊息會儲存在佇列中,直到接收者取回它。

乙個 wimp 環境像是 microsoft windows,藉由優先的某些形式(通常是事件的時間或是重要性的順序)來儲存使用者產生的事件到乙個 事件貯列 中。系統把每個事件從事件貯列中傳遞給目標的應用程式。

實現。實際上,訊息佇列常常保搜虛存在連結串列結構中。擁有許可權的程序可以向訊息佇列中寫入或讀取訊息。

目前,有很多訊息佇列有很多開源的實現,包括jboss messaging、joram、apache activemq、sun open message queue、rabbitmq、ibm mq、apache qpid、apache rocketmq和httpsqs。

5樓:休閒娛樂助手之星

訊息佇列」是在訊息的傳輸過程中儲存訊息的容器。

訊息」是在兩臺計算機間傳送的資料單位。訊息可以非常簡單,例如只包含文字字串;也可以更復雜,可能包含嵌入物件。

訊息被髮送到佇列中。「訊息佇列」是在訊息的傳輸過程中儲存訊息的容器。訊息佇列管理器在將訊息從它的源中繼到它的目標時充當磨此中間人。

佇列的主要目的是提供路由並保證訊息的傳遞;如果傳送訊息時接收者不可用,訊息佇列會保留訊息,直到可以成功地傳遞它。

什麼是訊息佇列

6樓:線浩言業人

訊息」是在兩臺計算機間傳送的資料單位。訊息可以非常簡單,例如只包含文字字串;也可以更襲察衫複雜,可拍腔能包含嵌入物件。

訊息被髮送到佇列中。「訊息佇列」是在訊息的傳輸過程中儲存訊息的容器。訊息佇列管理器在將訊息從它的源中繼到它的目標時充當中間人。

佇列的主要目的是提供路由並保證訊息的傳遞;如果傳送訊息時接收者不可用,訊息沒哪佇列會保留訊息,直到可以成功地傳遞它。

什麼是佇列,佇列的基本概念是什麼?

佇列和棧一樣,也是一種操作受一定規則限制的資料結構。佇列簡單理解就是平常生活中的排隊。佇列在結構上分為隊頭和隊尾,只能在隊頭執行出隊操作,在隊尾執行入隊操作。佇列的這種結構其實就類似於我們現實世界中的排隊,隊伍只能從前往後排,新來的排在隊尾,排在隊伍最前面的可以最先出隊,佇列實際上就是一種符合 先進...

Q4ml Q4m Q4al pl是什麼意思Q4m

q4ml 第四系全新統人工堆積層 q4m 第四系全新統海積層 q4al pl 第四系全新統衝洪積層 什麼是生活 生活是怎麼解釋 生活是 生存使活命源 指bai恤養活人 指為生du存發展而進行各zhi種活動 為生存發展而進行各種活動的經驗。衣食住行dao等方面的情況境況 生長 指家產,生計 活兒 工作...

“通訊”與“訊息”寫作的異同是什麼

1 相同點 真實性 時效性。1 篇幅長短上的區別。這是從形式上來看,從一般的意義上來看的。訊息一般用簡明扼要的文字,概括地報道事實,篇幅較短 而通訊則要求較為具體 祥盡 細緻地展示人物或事件的面貌,在一般情況下篇幅較長。2 從反映的內容來看。訊息以報道事件為主,通訊以寫人為主 即使是寫事件的通訊,也...