消息隊列

消息隊列

消息的傳輸過程中保存消息的容器
“消息隊列”是在消息的傳輸過程中保存消息的容器。“消息”是在兩台計算機間傳送的數據單位。消息可以非常簡單,例如隻包含文本字符串;也可以更複雜,可能包含嵌入對象。
    中文名:消息隊列 外文名:Message queue 含義:消息的傳輸過程中保存消息的容器 對象:兩台計算機間 特點:消息可以非常簡單也可以更複雜

消息簡介

“消息”是在兩台計算機間傳送的數據單位。消息可以非常簡單,例如隻包含文本字符串;也可以更複雜,可能包含嵌入對象。

消息被發送到隊列中。“消息隊列”是在消息的傳輸過程中保存消息的容器。消息隊列管理器在将消息從它的源中繼到它的目标時充當中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。

處理技術

“消息隊列”是Microsoft 的消息處理技術,它在任何安裝 Microsoft Windows的計算機組合中,為任何應用程序提供消息處理和消息隊列功能,無論這些計算機是否在同一個網絡上或者是否同時聯機。

“消息隊列網絡”是能夠相互間來回發送消息的任何一組計算機。網絡中的不同計算機在确保消息順利處理的過程中扮演不同的角色。它們中有些提供路由信息以确定如何發送消息,有些保存整個網絡的重要信息,而有些隻是發送和接收消息。

“消息隊列”安裝期間,管理員确定哪些服務器可以互相通信,并設置特定服務器的特殊角色。構成此“消息隊列”網絡的計算機稱為“站點”,它們之間通過“站點鍊接”相互連接。每個站點鍊接都有一個關聯的“開銷”,它由管理員确定,指示了經過此站點鍊接傳遞消息的頻率。

在基于JMS和XML技術的消息交換系統基礎之上,為了更好地對消息隊列進行管理,采用了消息隊列調度機制,并提出一個消息隊列進行管理的方案。

進程通信

消息隊列(也叫做報文隊列)能夠克服早期unix通信機制的一些缺點。作為早期unix通信機制之一的信号能夠傳送的信息量有限,後來雖然POSIX 1003.1b在信号的實時性方面作了拓廣,使得信号在傳遞信息量方面有了相當程度的改進,但是信号這種通信方式更像"即時"的通信方式,它要求接受信号的進程在某個時間範圍内對信号做出反應。

因此該信号最多在接受信号進程的生命周期内才有意義,信号所傳遞的信息是接近于随進程持續的概念(process-persistent);管道及有名管道則是典型的随進程持續IPC,并且,隻能傳送無格式的字節流無疑會給應用程序開發帶來不便,另外,它的緩沖區大小也受到限制。

消息隊列就是一個消息的鍊表。可以把消息看作一個記錄,具有特定的格式以及特定的優先級。對消息隊列有寫權限的進程可以向消息隊列中按照一定的規則添加新消息;對消息隊列有讀權限的進程則可以從消息隊列中讀走消息。消息隊列是随内核持續的。

目前主要有兩種類型的消息隊列:POSIX消息隊列以及系統V消息隊列,系統V消息隊列目前被大量使用。考慮到程序的可移植性,新開發的應用程序應盡量使用POSIX消息隊列。

系統V消息隊列是随内核持續的,隻有在内核重起或者顯示删除一個消息隊列時,該消息隊列才會真正被删除。因此系統中記錄消息隊列的數據結構(struct ipc_ids msg_ids)位于内核中,系統中的所有消息隊列都可以在結構msg_ids中找到訪問入口。消息隊列就是一個消息的鍊表。

每個消息隊列都有一個隊列頭,用結構struct msg_queue來描述。隊列頭中包含了該消息隊列的大量信息,包括消息隊列鍵值、用戶ID、組ID、消息隊列中消息數目等等,甚至記錄了最近對消息隊列讀寫進程的ID。讀者可以訪問這些信息,也可以設置其中的某些信息。

管理員

“消息隊列”管理員還在網絡中設置一台或多台作為“路由服務器”的計算機。路由服務器查看各站點鍊接的開銷,确定經過多個站點傳遞消息的最快和最有效的方法,以此決定如何傳遞消息。

消息隊列在XP Home(家庭版)中不存在。但是家庭版的XP仍可以訪問網絡和組成家庭局域網。所以根據這一點(等于是微軟Windows官方對XPHome設置)的情況看來,使用nLite将其移除應該沒有問題。但是基于nLite作者在nLite界面中将其标為“紅色”,以nLite作者的博學,我們應該信任他。所以不妨讓它留在我們系統裡,頂多是增加一項服務。卻可以感覺到很安然的狀态。

相關詞條

相關搜索

其它詞條