J.斯科特·哈威德(J.Scott Haugdahl)
在這一段關于網(wǎng)絡與應用的分析中,我所提到的信息隊列( Messaging Queuing ,MQ)可能對很多人來說并不熟悉。
MQ沒有像HTTP應用協(xié)議一樣得到大眾的關注,也很少有人會寫關于它的文章。
對MQ最好的描述也許是“發(fā)送與隊列之間的信息與平臺的應用中間件”。它是目前IBM大型機與基于Linux和Windows平臺運營的軟件應用或應用服務器,包括IBM的WebSphere之間溝通的因素。
使用MQ API的程序發(fā)送和接受特定的數(shù)據(jù)應用是從隊列中完成的,而非從應用本身。具體的應用程序通過隊列命名完成與其的聯(lián)系。它發(fā)送的信息具有彈性,可以同步或異步操作。
MQ具有一些很吸引人的特性。
其一,目標應用并不需要是并行運行或很繁忙的信息隊列。這些信息可以請求數(shù)據(jù)或更新數(shù)據(jù)。大多數(shù)情況下,異步應用程序可以只是“發(fā)送并忘記”。
另外,在網(wǎng)絡臨時斷開或是需要啟動遠程應用等情況下,MQ可以確保信息被交付給目標應用程序。因此,它不僅能被不同的平臺很容易地接受,同時還較傳統(tǒng)應用層協(xié)議具有更強大的可交付性和可用性機制。
當我第一次開始分析MQ協(xié)議時,讓我驚訝的是,沒有一個大牌商業(yè)分析商曾經(jīng)對它進行解讀。也沒有針對它的開源的Wireshark解碼。
我得指出,學習這一協(xié)議對我來說是非常有趣并且非常有意義的。很多時候,一個交互式應用程序中,利用MQ會非常有效。運行在TCP 1414端口的MQ可以識別信息的隊列名稱、管理器等信息并將其交付給目標應用程序。實際的信息數(shù)據(jù)可以是只有目標應用能夠理解的XML專用交換數(shù)據(jù)。
我嘗試利用MQ應對程序的申請,完成打開一個隊列、將數(shù)據(jù)加入隊列、打開一個結(jié)果隊列、檢索數(shù)據(jù)等命令。在這一過程中,所有隊列行動都完成得非常迅速,最長不超過38毫秒。
我還發(fā)現(xiàn),MQ可以處理優(yōu)先次序、信息有效期、為特定應用程序提供多個輸入或輸出隊列、數(shù)據(jù)轉(zhuǎn)換、提供即時信息傳遞確認、信息分組發(fā)送等更多的功能??磥?,只有充滿想象力的程序員才能用好MQ。