您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“MQ的基本概念”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
WebSphereMQ對象是一種由WebSphereMQ管理的具有可恢復(fù)能力的資源。
隊列管理器(Queue managers)
隊列(Queues)
名字列表(Namelists)
分發(fā)列表(Distribution lists)
進(jìn)程定義(Process definitions)
通道(Channels)
存儲類(Storage classes)
這些對象在異種平臺上都是統(tǒng)一的。對于系統(tǒng)管理員來說,操縱對象的命令都是可用的。這些命令格式,對于不同平臺是有區(qū)別的。當(dāng)你創(chuàng)建隊列管理器時,會自動地創(chuàng)建缺省對象。這些缺省對象可以幫助您來定義所需的對象。
每一個對象都有一個名字,以便通過命令和MQI調(diào)用可以引用它。通常在這些對象類型中的每一種對象的名字必須唯一。例如,一個隊列和一個進(jìn)程的名字可以相同,但是不可以有兩個相同名字的隊列。這意味著一個本地隊列名不能和模板隊列、遠(yuǎn)程隊列或別名隊列相同。但是也會有些特殊情況。另外在互連的隊列管理器網(wǎng)絡(luò)中,隊列管理器名必須唯一。
WebSphereMQ的對象名是大小寫敏感的,因此在定義對象時,需要仔細(xì)選擇好大小寫字母。在 WebSphere MQ 中,除最多有 20 個字符的通道之外,名稱最多可以有 48 個字符。
消息
WebSphereMQ定義了四種基本類型的消息。應(yīng)用程序可以定義其他類型的消息。四種基本類型是:
1.請求消息 Request message
請求消息需要應(yīng)答。從客戶端發(fā)往服務(wù)器的查詢和更新信息往往是一條請求消息。請求消息中應(yīng)該包含回復(fù)消息的路由信息,即回復(fù)消息發(fā)往什么地方。
2. 回復(fù)消息 Reply message
回復(fù)消息是對請求消息的回應(yīng)。請求消息中的信息決定了回應(yīng)消息的目的地。處理請求和回應(yīng)的應(yīng)用程序控制著消息間的關(guān)聯(lián),這種關(guān)聯(lián)和隊列管理器沒有關(guān)系。消息自身帶有足夠的信息供應(yīng)用程序?qū)崿F(xiàn)這種關(guān)聯(lián)。
3.報文消息 Datagram message
數(shù)據(jù)報消息是不需要回復(fù)的消息,報文消息只是一次單向的信息傳送。
4.報告消息 Report message。
報告消息用于對一些系統(tǒng)故障的響應(yīng)。有些報告消息是由應(yīng)用程序創(chuàng)建的,有些報告消息是由隊列管理器創(chuàng)建的。后一種情況是由于遠(yuǎn)程隊列已經(jīng)滿或者遠(yuǎn)程隊列不存在引起消息不能正確發(fā)送。最初發(fā)送者條消息的應(yīng)用程序不能檢測到這種錯誤,只有等遠(yuǎn)程隊列管理器創(chuàng)建了這樣一條報告消息并發(fā)往本地隊列管理器之后,應(yīng)用程序才能作相應(yīng)的處理。
隊列管理器把報告消息也用于其他目的,比如報告一些事件。消息可能有一個失效時間限制。如果一條消息在失效時間過后還沒有被某個應(yīng)用程序處理,該條消息將被隊列管理器從系統(tǒng)中清除。當(dāng)隊列管理器清除一條失效消息之后,它將創(chuàng)建一條報告消息,這條報告消息的目的地址由失效消息提供。
報告消息的另一個用途是確保消息的到達(dá)。應(yīng)用程序可以要求它們所發(fā)送的消息到達(dá)目的地后,他們收到一條報告消息,這叫做接收確認(rèn)(Confirmation of arrival)。與此相類似,應(yīng)用程序也可以要求當(dāng)另外一個程序取走這條消息時它們收到一條報告消息,這被叫做交付確認(rèn)(Confirmation of delivery)。這兩種情況,都是由隊列管理器創(chuàng)建報告消息,并把報告消息發(fā)送到適當(dāng)?shù)啬康牡亍?/p>
另外還一類特殊的消息叫觸發(fā)消息。觸發(fā)消息是由隊列管理器創(chuàng)建的一類特殊消息。WebSphere MQ的隊列管理器提供了一種當(dāng)滿足某一條件時,自動觸發(fā)應(yīng)用程序的機(jī)制,而觸發(fā)消息是觸發(fā)機(jī)制的重要組成部分。
應(yīng)用程序也可以定義新的消息類型。隊列管理器不能解釋這些類型,應(yīng)用程序設(shè)置的消息類型由一個范圍。這些類型值可用來區(qū)分不同類型的應(yīng)用程序在同一個輸入隊列中放入的消息。
最大消息長度為 100 MB(其中 1 MB 等于 1 048 576 字節(jié)),缺省最大消息長度是 4 MB。實際上,消息長度受以下方面的影響:
接收隊列定義的最大消息長度
隊列管理器定義的最大消息長度
傳輸隊列定義的最大消息長度
發(fā)送或接收應(yīng)用程序定義的最大消息長度
存儲消息的可用空間
所以有時可能需要由多個消息組成的信息才能滿足應(yīng)用程序的要求。
應(yīng)用程序使用 MQI 調(diào)用來實現(xiàn)發(fā)送和接收消息。
例如,要將消息放入隊列,應(yīng)用程序:
通過發(fā)出 MQI MQOPEN 調(diào)用打開所需的隊列
發(fā)出 MQI MQPUT 調(diào)用以將消息放入隊列
另一個應(yīng)用程序可以通過發(fā)出MQI MQGET 調(diào)用,從同一隊列取出消息
隊列
按創(chuàng)建方法分類
預(yù)定義隊列由管理員使用相應(yīng)的 MQSC 或 PCF 命令創(chuàng)建。 預(yù)定義隊列是永久的;它們的存在與應(yīng)用程序是否實用它們無關(guān),并且 WebSphere MQ 重新啟動后繼續(xù)存在。
動態(tài)隊列在應(yīng)用程序發(fā)出設(shè)定模型隊列名的MQOPEN調(diào)用時創(chuàng)建的。被創(chuàng)建的隊列是基于一個模板隊列。 您可以使用 MQSC 命令 DEFINE QMODEL 創(chuàng)建模板隊列。動態(tài)隊列繼承了模板隊列的屬性。模板隊列有一個屬性可以說明動態(tài)隊列是永久的還是臨時的。永久隊列在應(yīng)用程序和隊列管理器重新啟動后繼續(xù)存在;臨時隊列在重新啟動后消失。
按功能分類
1. 本地隊列(local queue):
一個本地隊列是一個物理上位于本地隊列管理器中的隊列。本地隊列實際上存在與本地系統(tǒng)的內(nèi)存或磁盤存儲終。本地隊列管理器控制隊列的訪問。
應(yīng)用程序可以“PUT”消息到本地隊列,也可以從本地隊列“GET”消息,另外程序還可以查詢或修改這些隊列的某些屬性。對隊列屬性的修改需要相應(yīng)的權(quán)限。
2. 遠(yuǎn)程隊列(remote queue):
一個遠(yuǎn)程隊列屬于一個不與該應(yīng)用程序直接相連的隊列管理器。對這類隊列的訪問包含有本地隊列管理器和遠(yuǎn)程隊列管理器的通信過程。這種通信涉及到通道。
應(yīng)用程序可對遠(yuǎn)程隊列進(jìn)行某些操作,比如程序可以向一個遠(yuǎn)程隊列放一條消息,但程序不能從遠(yuǎn)程隊列中去消息。應(yīng)用程序只能從本地隊列讀取消息。
應(yīng)用程序有兩種不同的方法可用來訪問遠(yuǎn)程隊列。第一種是當(dāng)程序打開一個遠(yuǎn)程隊列時同時提供隊列管理器名和隊列名兩個參數(shù)。這要求程序知道目的隊列屬于哪個隊列管理器。第二種方法是在本地隊列管理器上存在一個遠(yuǎn)程隊列的定義,這個定義包含有足夠的信息讓本地隊列管理器確定該遠(yuǎn)程隊列所在的隊列管理器。
遠(yuǎn)程隊列定義中的目的隊列不一定是遠(yuǎn)程隊列管理器的本地隊列,它也可以是一個遠(yuǎn)程隊列定義
應(yīng)用程序放一條消息到Q1,Q1是本地隊列管理器QM1上的一個遠(yuǎn)程隊列定義:Q2at QM2。QM2是遠(yuǎn)程隊列管理器。Q2是QM2上的一個遠(yuǎn)程隊列定義Q3 at QM3。Q3是QM3的一個本地隊列,經(jīng)過兩次傳送,消息最終到達(dá)Q3這個QM3的本地隊列。
有多種原因使這種多跳(Multihop)傳送變得有意義。在一個TCP/IP網(wǎng)絡(luò)內(nèi)部,所有機(jī)器都有IP地址,IP協(xié)議本身處理節(jié)點間的路由選擇。但假設(shè)消息需要穿過不同類型的網(wǎng)絡(luò),這就需要中間件參加路由選擇。在圖中,QM2位于一臺連接TCP/IP網(wǎng)和SNA網(wǎng)的機(jī)器上,只需在QM2上提供一個遠(yuǎn)程隊列定義Q2:Q3 at QM3,就可以實現(xiàn)消息的跨網(wǎng)絡(luò)傳輸。
因為對遠(yuǎn)程隊列的訪問總是涉及到隊列管理器之間的通信,因而我們需要定義其他一些資源,比如通道、傳輸隊列(Transmission queue)。
3. 傳輸隊列(Transmission queue):
傳輸隊列是臨時存儲目標(biāo)為遠(yuǎn)程隊列管理器的消息的隊列。隊列管理器利用傳輸隊列把消息分階段地發(fā)向遠(yuǎn)程隊列。隊列管理器和消息移動程序一起負(fù)責(zé)把數(shù)據(jù)傳送到遠(yuǎn)程隊列。當(dāng)隊列管理器收到把一條消息發(fā)往遠(yuǎn)程隊列的要求后,它把消息發(fā)送到一個與目的隊列管理器相關(guān)聯(lián)的傳輸隊列,傳輸隊列位于本地隊列管理器上。目的隊列管理器的名稱可能由應(yīng)用程序提供,也可以從遠(yuǎn)程隊列定義中得到。
一個傳輸隊列是兩個隊列管理器之間的連接的一端。所有直接目的地是同一隊列管理器的消息都可放在同一個傳輸隊列上,這些消息的最終目的可能不一樣。把消息從一個隊列管理器傳送到另一個隊列管理器只需要一個傳輸隊列,然而也有可能在兩個隊列管理器之間存在著多個連接以提供不同的傳輸服務(wù),每個連接都帶有一個不同的傳輸隊列。
傳輸隊列是由MCA處理的,MCA負(fù)責(zé)在隊列管理器之間可靠地傳送消息。MCA實際上是處理傳輸隊列上消息的MQI應(yīng)用程序。
4. 動態(tài)隊列和模板隊列:
除了有固定定義的隊列之外,WebSphere MQ還為程序在它們執(zhí)行時提供了動態(tài)地創(chuàng)建隊列的能力。例如,一個應(yīng)用程序作為某種服務(wù)的客戶,它可能創(chuàng)建一個動態(tài)隊列,并通知服務(wù)器把對服務(wù)要求的響應(yīng)發(fā)送到該動態(tài)隊列。當(dāng)然,這種情況也可以使用具有永久定義的隊列。為了簡化在創(chuàng)建動態(tài)隊列時所必需設(shè)置的許多參數(shù),動態(tài)隊列總是基于模板隊列被創(chuàng)建的,模板隊列定義了動態(tài)隊列的所有屬性。當(dāng)應(yīng)用程序試圖打開一個模板隊列時,WebSphere MQ就創(chuàng)建一個動態(tài)隊列。WebSphere MQ為應(yīng)用提供了系統(tǒng)模板隊列。
動態(tài)隊列也可以分成兩種,它們的生存周期和故障恢復(fù)特性不同。在創(chuàng)建臨時動態(tài)隊列(Temorary dynamic queue)的應(yīng)用程序關(guān)閉時,這些隊列將被刪除,隊列上的消息將丟失。這類動態(tài)隊列不支持消息的持久性。如果隊列管理器發(fā)生故障重新啟動,臨時動態(tài)隊列也不會被恢復(fù)。另一種動態(tài)隊列是持久動態(tài)隊列(Permanent dynamic queue)。只有當(dāng)一個應(yīng)用程序關(guān)閉持久動態(tài)隊列時定義刪除選項,持久動態(tài)隊列才會被刪除。刪除持久動態(tài)隊列的程序不一定是創(chuàng)建持久動態(tài)隊列的程序,持久動態(tài)隊列在隊列管理器重啟后會被恢復(fù),并且支持具有持久性的消息。
5. 啟動隊列
啟動隊列是在觸發(fā)中使用的隊列。如果隊列管理器將使用觸發(fā),則必須至少為此隊列管理器定義一個啟動隊列。隊列管理器在觸發(fā)器事件發(fā)生時將觸發(fā)器消息放入啟動隊列。觸發(fā)器事件是由隊列管理器檢測的條件的邏輯組合。例如,當(dāng)隊列上的消息數(shù)達(dá)到預(yù)定義深度時,可能會生成觸發(fā)器事件。此事件使隊列管理器將觸發(fā)器消息放入指定的啟動隊列。此觸發(fā)器消息由觸發(fā)器監(jiān)視器(即監(jiān)視啟動隊列的特殊應(yīng)用程序)檢索。然后觸發(fā)器監(jiān)視器啟動在觸發(fā)器消息中指定的應(yīng)用程序。
6. 群集傳輸隊列
每個在群集中的隊列管理器有一個稱為 SYSTEM.CLUSTER.TRANSMIT.QUEUE 的群集傳輸隊列。當(dāng)您定義隊列管理器時,按缺省情況創(chuàng)建此隊列的定義。作為群集一部分的隊列管理器可以將群集傳輸隊列上的消息發(fā)送到在同一群集中的任何其它隊列管理器。 在路由解析期間,群集傳輸隊列優(yōu)先于缺省傳輸隊列。 當(dāng)隊列管理器是群集的一部分時,缺省操作是使用 SYSTEM.CLUSTER.TRANSMIT.QUEUE,除非當(dāng)目標(biāo)隊列管理器不是此群集的一部分。
7. 死信隊列 (Dead letter queue)
死信(未傳遞的消息)隊列是存儲無法發(fā)送到其正確目的地的消息的隊列。有時候會出現(xiàn)隊列管理器不能把消息發(fā)送到目的地的情況,此時消息將被發(fā)送到某個死信隊列中。死信隊列中的消息常常暗示了系統(tǒng)可能出現(xiàn)的問題。例如當(dāng)一條消息到達(dá)目的隊列管理器之后卻發(fā)現(xiàn)目的隊列并不存在。或者目的隊列出現(xiàn)不能接收信消息的情況,比如目的隊列已經(jīng)滿了,或者它被設(shè)置成不允許再加入新的消息。并不是所有的放消息操作的失敗都導(dǎo)致消息被放入死信隊列,例如,由于本地隊列出現(xiàn)錯誤造成應(yīng)用程序不能“放”消息,此時MQI調(diào)用直接把錯誤碼返回給應(yīng)用程序。
有些錯誤只能由死信隊列報告,例如,一條消息穿越網(wǎng)絡(luò)之后到達(dá)目的隊列管理器,卻發(fā)現(xiàn)目的隊列已滿。發(fā)現(xiàn)錯誤的機(jī)器不同于最初“放”消息應(yīng)用程序所在的機(jī)器,甚至可能放消息的應(yīng)用程序已不在運(yùn)行狀態(tài)。此時目的隊列管理器把這條消息發(fā)往它所擁有的死信隊列,而不是簡單地扔掉該條消息。這樣使得這次錯誤是可見的,也給應(yīng)用程序提供了一個改正錯誤的機(jī)會。
死信隊列是WebSphere MQ面對遠(yuǎn)端系統(tǒng)錯誤時的一種解決方案。應(yīng)用程序可以利用WebSphere MQ提供的其他一些工具來監(jiān)視并確保消息的可靠傳送和接收。
在隊列管理器創(chuàng)建時,系統(tǒng)會缺省創(chuàng)建一個死信隊列,隊列名是SYSTEM.DEAD.LETTER.QUEUE。建議在生產(chǎn)系統(tǒng)上,需要獨(dú)立創(chuàng)建一個死信隊列,而不使用系統(tǒng)缺省的死信隊列。
8. 命令隊列
命令隊列 SYSTEM.ADMIN.COMMAND.QUEUE 是用來存放由應(yīng)用管理程序放的具有PCF(programcommand format)的消息的隊列。該隊列主要用于編寫管理程序時使用。具體的使用將在后續(xù)章節(jié)介紹。在創(chuàng)建隊列管理器時將為每個隊列管理器自動創(chuàng)建命令隊列。
9. 回復(fù)隊列
當(dāng)應(yīng)用程序發(fā)送請求消息時,接收消息的應(yīng)用程序可以將回復(fù)消息發(fā)送給發(fā)送應(yīng)用程序。此回復(fù)消息放入一個稱為回復(fù)隊列的隊列中,它通常是發(fā)送應(yīng)用程序的本地隊列?;貜?fù)隊列的名稱由作為消息描述符一部分的發(fā)送應(yīng)用程序指定。
10. 別名隊列
別名隊列實際上是本地隊列、遠(yuǎn)程隊列定義或隊列名表的另外一個名字。它是一種簡單的名字到名字的映射,它允許應(yīng)用程序用另外一個名字來訪問隊列。WebSphere MQ已經(jīng)為應(yīng)用程序屏蔽了許多底層系統(tǒng)細(xì)節(jié),特別是網(wǎng)絡(luò)通信的細(xì)節(jié),而別名隊列允許在不修改應(yīng)用程序的條件下訪問其他名字的隊列。
在WebSphere MQ中隊列管理器是基本的軟件系統(tǒng),隊列管理器可看成是隊列和其他對象的容器。WebSphere MQ中的每一個隊列都屬于一個隊列管理器,隊列管理器是為應(yīng)用程序和WebSphere MQ部件(一些管理工具)提供對隊列管理中對象的訪問。
一個隊列管理器是WebSphere MQ中的一個基本的獨(dú)立的執(zhí)行單元。一臺機(jī)器上可以運(yùn)行一個或多個隊列管理器。
任何需要訪問WebSphere MQ提供的服務(wù)的應(yīng)用程序都必須先和隊列管理器相連,和應(yīng)用程序相連的隊列管理器對該應(yīng)用程序而言就叫“本地隊列管理器”(Local Queue Manager),本地隊列管理器為程序提供MQI調(diào)用的支持。應(yīng)用程序可以操作、管理本地隊列管理器所擁有的各種資源,也可以向其他的隊列管理器發(fā)送消息。
應(yīng)用程序通過一種叫做MQI的編程接口向隊列管理器申請服務(wù)。這些服務(wù)包括“放”一條消息到隊列或從隊列“取”一條消息等一些基本操作。隊列管理器還使隊列成為可靠的存儲消息的地方,它也控制安全性管理,并提供一些特殊的隊列功能,比如觸發(fā)隊列。
為了減少應(yīng)用程序?qū)τ谒\(yùn)行環(huán)境的依賴性,WebSphere MQ的應(yīng)用程序可以和一個它不知道名字的隊列管理器相連,這個隊列管理器就是一臺機(jī)器上的缺省隊列管理器。如果程序在調(diào)用MQCONN時,把隊列管理器名參數(shù)設(shè)置為空,MQCONN將返回與缺省的隊列管理器連接的句柄。
隊列管理器擁有每個隊列。隊列管理器負(fù)責(zé)維護(hù)它所擁有的隊列,以及將它接收到的所有消息存儲到相應(yīng)的隊列??梢杂蓱?yīng)用程序或隊列管理器將消息放入隊列,這些是它的正常操作的一部分。
消息通道是一種提供從一個隊列管理器到另一個隊列管理器的通信路徑。消息通道用在分布式的隊列把消息從一個隊列管理器發(fā)送到另一個隊列管理器。它們使應(yīng)用程序屏蔽了底層的通信協(xié)議。隊列管理器可能存在同種或異種平臺之間。為了實現(xiàn)隊列管理器之間的通信,您必需在一個隊列管理器中定義一個發(fā)送消息的通道對象,在另一個隊列管理器中定義一個接收消息的通道對象。消息通道是一個單向鏈接。它通過消息通道代理(message channel agents)把兩個隊列管理器連接起來。
不要和MQI通道(MQI channel)通道混淆。MQI通道有兩種類型,分別是服務(wù)器連接(server-connection)和客戶器連接(client-connection)。
消息通道分類
消息通道的定義可以分為以下6種類型:
l 發(fā)送通道(Sender)
l 接收通道(Receiver)
l 服務(wù)器通道(Server)
l 請求器通道(Requester)
l 群集發(fā)送通道(Cluster sender)
l 群集接收通道(Cluster receiver)
消息通道的組合形式
如果要在隊列管理之間實現(xiàn)消息傳輸,必須要在兩個隊列管理器上都要定義相應(yīng)的通道。發(fā)送方和接收方通道的組合形式如下:
l 發(fā)送通道-接收通道(Sender-receiver )
l 請求器通道-服務(wù)器通道(Requester-server)
l 請求器通道-發(fā)送通道(Requester-sender (callback) )
l 服務(wù)器通道-接收通道(Server-receiver )
l 群集發(fā)送通道-群集接收通道(Cluster sender –cluster receiver)
注意:通道的組合形式有5種形式,每種組合方式是固定的,用戶不能隨意組合。每對通道的名稱必需相同例如:在發(fā)送通道-接收通道組合中,發(fā)送通道名和接收通道名必須一致,否則通道將無法啟動。
消息通道用法 發(fā)送通道-接收通道(Sender-receiver)
用法:由一個系統(tǒng)的發(fā)送通道來啟動通道,以便它可以發(fā)送消息到另一個系統(tǒng)。發(fā)送通道向接收通道發(fā)送啟動請求。發(fā)送通道從傳輸隊列發(fā)送消息到接收通道。接收通道把消息放到目標(biāo)隊列。
請求器通道-服務(wù)器通道(Requester-server)
用法:
(1)由一個系統(tǒng)中的請求器通道來啟動通道,以便它能從另一個系統(tǒng)接收到消息。 請求器通道向通道另一端的服務(wù)器通道發(fā)送請求來啟動。服務(wù)器通道從傳輸隊列把消息發(fā)送到請求器通道。
(2) 服務(wù)器通道也能啟動通道,并發(fā)送消息到請求器, 但這僅應(yīng)用于完全意義的服務(wù)器通道, 也即服務(wù)器通道定義中應(yīng)含有對方的連接名。一個完全意義的服務(wù)器通道可以由請求器通道啟動, 也可以發(fā)起和服務(wù)器通道的通訊。
(3) 最好不要手工去停止Server和Request通道,而是依靠Server通道的Discint的屬性來停止通道。
請求器通道-發(fā)送通道(Requester-sender (callback))
用法:請求器通道啟動通道,發(fā)送通道終止這個會話。發(fā)送通道然后依據(jù)它的通道定義中的信息(稱為 callback)來重新啟動會話。它把消息從傳輸隊列發(fā)送給請求器通道。最好不要手工去停止Sender和Request通道,而是依靠Sender 通道的Discint屬性來停止通道。
服務(wù)器通道-接收通道(Server-receiver)
用法:類似于發(fā)送通道-接收通道,但僅應(yīng)用在完全意義的服務(wù)器通道。也即服務(wù)器通道定義應(yīng)含有對方的連接名,通道的啟動方是服務(wù)器通道。
群集發(fā)送通道(Cluster sender)
用法:在一個群集中,每個隊列管理器都有一個群集發(fā)送通道,通過它可以把送群集信息發(fā)送到其中一個隊列管理器資源管理器。隊列管理器通過這個通道也可以把消息發(fā)送到其他的隊列管理器。
群集接收通道(cluster receiver)
功能:在一個群集中,每一個隊列管理器都有一個群集接收通道。通過這個通道可以接收數(shù)據(jù)消息和關(guān)于群集的消息。
MQI通道是WebSphere MQ 客戶端和服務(wù)器上的隊列管理器的通信的通道。當(dāng)客戶端應(yīng)用程序發(fā)出MQCONN或MQCONNX調(diào)用時,才開始建立連接。它是一個雙向的通道,可以負(fù)責(zé)發(fā)送和接收,被用作MQI調(diào)用的傳送和響應(yīng)。
一個MQI通道可以把一個客戶端連接到單個隊列管理器,MQI通道有兩種類型,它們定義了雙向的MQI通道。
客戶端連接通道(Client-connectionchannel)
這種類型為WebSphereMQ 的客戶端所使用。
服務(wù)器連接通道(Server-connectionchannel)
這種類型為運(yùn)行隊列管理器的服務(wù)器端所使用,運(yùn)行在WebSphere MQ 客戶端的應(yīng)用程序?qū)⑹褂眠@種通道進(jìn)行通信。
消息通道與MQI通道之間的區(qū)別可以從兩方面進(jìn)行比較:
l MQI通道是雙向的:一個MQI通道可以被用來發(fā)送請求,也可用來接收響應(yīng)。而消息通道則只能單向數(shù)據(jù)通信。如果要在兩個隊列管理器之間實現(xiàn)雙向通信,那么需要定義兩個消息通道,一個用來實現(xiàn)數(shù)據(jù)的發(fā)送,另一個用來實現(xiàn)數(shù)據(jù)的接收。
l MQI通道的通信是同步的:當(dāng)一個MQI請求從客戶端發(fā)送服務(wù)器端時,WebSphere MQ的客戶端在發(fā)送下一個請求之間必須要等待來自服務(wù)器端的響應(yīng)。而消息通道,在通道中傳輸?shù)南⑹桥c時間無關(guān)的。大量的消息可以從一個隊列管理器發(fā)送到另一個隊列管理器,發(fā)送隊列管理器不必等待來自接收隊列管理器的任何響應(yīng)。
進(jìn)程定義對象定義響應(yīng) WebSphere MQ 隊列管理器上的觸發(fā)器事件啟動的應(yīng)用程序。進(jìn)程定義屬性包含應(yīng)用程序標(biāo)識、應(yīng)用程序類型和特定于應(yīng)用程序的數(shù)據(jù)。
在使用分布式排隊的傳統(tǒng) WebSphere MQ 網(wǎng)絡(luò)中,每個隊列管理器是獨(dú)立的。如果隊列管理器需要將消息發(fā)送到另一個隊列管理器,則它必須定義一個傳輸隊列、一個到遠(yuǎn)程隊列管理器的通道,以及它要將消息發(fā)送到的每個隊列的遠(yuǎn)程隊列定義。
群集是一組以隊列管理器可以在不需要傳輸隊列、通道和遠(yuǎn)程隊列定義的情況下在單個網(wǎng)絡(luò)上彼此直接通信的方法設(shè)置的隊列管理器。
名稱列表是包含其它 WebSphere MQ 對象列表的 WebSphere MQ 對象。通常,應(yīng)用程序(如觸發(fā)器監(jiān)視器)使用名稱列表,它們用于標(biāo)識一組隊列。使用名稱列表的優(yōu)點是它獨(dú)立于應(yīng)用程序維護(hù);可以在不停止任何使用它的應(yīng)用程序的情況下更新它。并且,如果一個應(yīng)用程序失敗,則名稱列表不受影響,其它應(yīng)用程序可以繼續(xù)使用它。
名稱列表還與隊列管理器群集一起使用,以維護(hù)多個 WebSphere MQ 對象引用的群集列表。
隊列管理器認(rèn)證信息對象(AUTHINFO)組成安全套接字層(SSL)安全性的WebSphere MQ 支持的部件。它提供使用LDAP 服務(wù)器檢查證書撤銷列表(CRL)所需的定義。CRL 允許認(rèn)證中心取消不再可信的證書。
本書描述對認(rèn)證信息對象使用setmqaut、dspmqaut、dmpmqaut、rcrmqobj、rcdmqimg 和 dspmqfls 命令。有關(guān) SSL 概述以及 AUTHINFO 的使用,請參閱 WebSphere MQ Security。
系統(tǒng)缺省對象是一組每次創(chuàng)建隊列管理器時自動創(chuàng)建的對象定義。您可以復(fù)制和修改這些對象定義中的任何一個,以在安裝時用于應(yīng)用程序。
缺省對象名具有項 SYSTEM.DEFAULT;例如,缺省本地隊列是 SYSTEM.DEFAULT.LOCAL.QUEUE,并且缺省接收方通道是 SYSTEM.DEFAULT.RECEIVER。您無法重命名這些對象;這些名稱的缺省對象是必需的。
當(dāng)您定義對象時,從相應(yīng)的缺省對象復(fù)制您不明確指定的任何屬性。例如,如果您定義本地隊列,則從缺省隊列 SYSTEM.DEFAULT.LOCAL.QUEUE 獲取您未指定的那些屬性。
請參閱附錄1, "系統(tǒng)和缺省對象"以獲取有關(guān)系統(tǒng)缺省的更多信息。
MQI(message queue interface)
MQI(消息隊列接口)有下列組成部分:
l 函數(shù)接口:應(yīng)用程序通過函數(shù)可以訪問隊列管理器和它的部件。
l 數(shù)據(jù)結(jié)構(gòu):應(yīng)用程序使用提供的數(shù)據(jù)接口來是實現(xiàn)把數(shù)據(jù)傳遞給隊列管理器,或從隊列管理器中獲得數(shù)據(jù)。
l 基本數(shù)據(jù)類型:也是用來實現(xiàn)從隊列管理器傳遞數(shù)據(jù),或從隊列管理器中獲得數(shù)據(jù)。
以下是每個 WebSphere MQ 控制命令的參考信息:
命令名 | 目的 |
amqmcert | 管理 SSL 證書 |
amqmdain | 配置或控制 WebSphere MQ 服務(wù)(僅 Windows 系統(tǒng)) |
crtmqcvx | 轉(zhuǎn)換數(shù)據(jù) |
crtmqm | 創(chuàng)建本地隊列管理器 |
dltmqm | 刪除隊列管理器 |
dmpmqaut | 轉(zhuǎn)儲打開對象的權(quán)限 |
dmpmqlog | 轉(zhuǎn)儲日志 |
dspmq | 顯示隊列管理器 |
dspmqaut | 顯示打開對象的權(quán)限 |
dmpmqcap | 顯示處理程序容量和處理程序數(shù) |
dspmqcsv | 顯示命令服務(wù)器狀態(tài) |
dspmqfls | 顯示文件名 |
dspmqtrc | 顯示格式化跟蹤輸出(HP-UX、Linux 和 Solaris) |
dspmqrtn | 顯示事務(wù)的詳細(xì)信息 |
endmqcsv | 停止隊列管理器上的命令服務(wù)器 |
endmqlsr | 停止隊列管理器上的偵聽器進(jìn)程 |
endmqm | 停止本地隊列管理器 |
endmqtrc | 停止對實體的跟蹤(不用于 AIX) |
rcdmqimg | 向日志寫對象的映象 |
rcrmqobj | 根據(jù)它們在日志中的映象重新創(chuàng)建一個對象 |
rsvmqtrn | 提交或逆序恢復(fù)事務(wù) |
runmqchi | 啟動通道啟動器進(jìn)程 |
runmqchl | 啟動發(fā)送方或請求者通道 |
runmqdlq | 啟動死信隊列處理程序 |
runmqlsr | 啟動偵聽器進(jìn)程 |
runmqsc | 向隊列管理器發(fā)出 MQSC 命令 |
runmqtmc | 調(diào)用客戶機(jī)的觸發(fā)器監(jiān)控器(僅 AIX 客戶機(jī)) |
runmqtrm | 調(diào)用服務(wù)器的觸發(fā)器監(jiān)控器 |
setmqaut | 更改打開對象的權(quán)限 |
setmqcap | 設(shè)置處理程序容量 |
setmqcrl | 設(shè)置證書撤銷列表(CRL)服務(wù)器定義 |
setmqscp | 設(shè)置服務(wù)連接點(僅 Windows 系統(tǒng)) |
strmqcsv | 啟動隊列管理器的命令服務(wù)器 |
strmqm | 啟動本地隊列管理器 |
strmqtrc | 啟用跟蹤(不用于 AIX) |
舉例
1. 此命令創(chuàng)建一個稱為 Paint.queue.manager 的缺省隊列管理器,創(chuàng)建系統(tǒng)和缺省對象,并請求兩個主日志文件和三個次日志文件:
crtmqm -c"Paint shop" -ll -lp 2 -ls 3 -q Paint.queue.manager
2. 下列命令刪除隊列管理器 travel 并且也抑制任何由該命令發(fā)出的消息。
dltmqm -z travel
3. 此命令立即結(jié)束名為 saturn.queue.manager 的隊列管理器。完成所有當(dāng)前 MQI 調(diào)用,但不允許新的調(diào)用。
endmqm -isaturn.queue.manager
“MQ的基本概念”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。