MQ 消息中間件:數據庫
中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不一樣的技術之間共享資源。服務器
中間件位於客戶機/ 服務器的操做系統之上,管理計算機資源和網絡通信。是鏈接兩個獨立應用程序或獨立系統的軟件。相鏈接的系統,即便它們具備不一樣的接口,但經過中間件相互之間仍能交換信息。網絡
執行中間件的一個關鍵途徑是信息傳遞。經過中間件,應用程序能夠工做於多平臺或 OS 環境。消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通訊來進行分佈式系統的集成。經過提供消息傳遞和消息排隊模型,它能夠在分佈式環境下擴展進程間的通訊。數據結構
面向消息的中間件 <百度百科:中間件>分佈式
MOM指的是利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通訊來進行分佈式系統的集成。經過提供消息傳遞和消息排隊模型,它可在分佈環境下擴展進程間的通訊,並支持多通信協議、語言、應用程序、硬件和軟件平臺。流行的MOM中間件產品有IBM的MQSeries、BEA的MessageQ等。消息傳遞和排隊技術有如下三個主要特色:工具
一、通信程序可在不一樣的時間運行spa
程序不在網絡上直接相互通話,而是間接地將消息放入消息隊列,由於程序間沒有直接的聯繫。因此它們沒必要同時運行。消息放入適當的隊列時,目標程序甚至根本不須要正在運行;即便目標程序在運行,也不意味着要當即處理該消息。操作系統
二、對應用程序的結構沒有約束中間件
在複雜的應用場合中,通信程序之間不只能夠是一對一的關係,還能夠進行一對多和多對一方式,甚至是上述多種方式的組合。多種通信方式的構造並無增長應用程序的複雜性。接口
三、程序與網絡複雜性相隔離
程序將消息放入消息隊列或從消息隊列中取出消息來進行通信,與此關聯的所有活動,好比維護消息隊列、維護程序和隊列之間的關係、處理網絡的從新啓動和在網絡中移動消息等是MOM的任務,程序不直接與其它程序通話,而且它們不涉及網絡通信的複雜性。
IBM 消息中間件概述:
MQ 消息中間件爲用戶和應用開發人員提供了一種直接,簡單的手段以實現應用系統在不一樣操做系統平臺之間穩定可靠地傳遞,交換重要的數據和信息,確保消息不丟失/不復傳。 MQ 消息傳輸產品和企業 IT 應用的關係,就如同電子郵件和人同樣,是 SOA 時代企業 IT 應用之間相互傳遞消息的最重要工具。可是,與因爲網絡緣由而常常丟失消息的脆弱的電子郵件系統不一樣的是,MQ 消息中間件強大而穩定,永遠可以確保每個字節的消息都可以被正確地傳送到目的應用之中。
---------------------------------------------------------------------------
消息中間件有點像操做系統的消息隊列,能夠在你的多個數據中心間進行數據的傳遞。
您使用消息中間件的時候,分如下幾個步驟,
1, 鋪設消息管道,就是定義多個隊列,A到B,B到C,A到F;
2,利用其提供的簡單接口編寫數據到消息包的處理,把你的數據打成消息數據包,把消息數據包還原成你的完整數據。
3,根據數據內容把不一樣的消息壓入到不一樣的隊列,送往不一樣的目的地
MQ的操做程序:
第一步是讓應用程序與隊列管理器鏈接。它經過 MQConnect 調用來進行此鏈接。
下一步使用 MQOpen 調用爲輸出打開一個隊列。
而後應用程序使用 MQPut 調用將其數據放到隊列上。
要接收數據,應用程序調用 MQOpen 調用打開輸入隊列。
應用程序使用 MQGet 調用從隊列上接收數據。
中間件的簡單的例子:
有這樣一個需求,sap有一組hr的相關信息,好比姓名,工號等等要求顯示到一個portal上面,供user使用 查看信息。
數據怎麼從sap到portal呢,可能的一種狀況是,使用一箇中間件,經過rfc或者idoc把相關信息從sap取出來,整合之後在經過jdbc插入到 portal的後臺db裏去。
這就是一箇中間件參與數據整合 協同的簡單過程。這樣一個過程是由中間件完成的。因此簡單的說,中間件就是在異構系統間起數據傳輸,整合做用的一個軟件。
以剛纔的例子爲例,看看什麼是消息中間件:
若是是消息中間件,就要把剛纔例子中的hr數據當作一個消息,具體的數據結構能夠根據須要和開發平臺本身來定義。把從rfc出來的數據,先造成一個消息,而後發佈到一個消息隊列裏面,而後再經過必定規則去取這個消息解析再使用jdbc插入數據庫
這個過程能夠是一對一,以能夠是多對多。也許上面這個簡單的例子並不能體現消息中間件的優勢,可是在複雜的網絡環境下,例如多個通信方式,多個業務系統之間進行消息交互,他的優勢是顯而易見的。