真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MQ的基本概念

本篇內(nèi)容介紹了“MQ的基本概念”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供白朗企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為白朗眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

對(duì)象(objects)

       WebSphereMQ對(duì)象是一種由WebSphereMQ管理的具有可恢復(fù)能力的資源。

 隊(duì)列管理器(Queue managers)

隊(duì)列(Queues)

名字列表(Namelists)

分發(fā)列表(Distribution lists)

進(jìn)程定義(Process definitions)

通道(Channels)

存儲(chǔ)類(Storage classes)

 這些對(duì)象在異種平臺(tái)上都是統(tǒng)一的。對(duì)于系統(tǒng)管理員來(lái)說(shuō),操縱對(duì)象的命令都是可用的。這些命令格式,對(duì)于不同平臺(tái)是有區(qū)別的。當(dāng)你創(chuàng)建隊(duì)列管理器時(shí),會(huì)自動(dòng)地創(chuàng)建缺省對(duì)象。這些缺省對(duì)象可以幫助您來(lái)定義所需的對(duì)象。

       每一個(gè)對(duì)象都有一個(gè)名字,以便通過(guò)命令和MQI調(diào)用可以引用它。通常在這些對(duì)象類型中的每一種對(duì)象的名字必須唯一。例如,一個(gè)隊(duì)列和一個(gè)進(jìn)程的名字可以相同,但是不可以有兩個(gè)相同名字的隊(duì)列。這意味著一個(gè)本地隊(duì)列名不能和模板隊(duì)列、遠(yuǎn)程隊(duì)列或別名隊(duì)列相同。但是也會(huì)有些特殊情況。另外在互連的隊(duì)列管理器網(wǎng)絡(luò)中,隊(duì)列管理器名必須唯一。

       WebSphereMQ的對(duì)象名是大小寫敏感的,因此在定義對(duì)象時(shí),需要仔細(xì)選擇好大小寫字母。在 WebSphere MQ 中,除最多有 20 個(gè)字符的通道之外,名稱最多可以有 48 個(gè)字符。

消息

消息的類型

       WebSphereMQ定義了四種基本類型的消息。應(yīng)用程序可以定義其他類型的消息。四種基本類型是:

1.請(qǐng)求消息 Request message

請(qǐng)求消息需要應(yīng)答。從客戶端發(fā)往服務(wù)器的查詢和更新信息往往是一條請(qǐng)求消息。請(qǐng)求消息中應(yīng)該包含回復(fù)消息的路由信息,即回復(fù)消息發(fā)往什么地方。

2. 回復(fù)消息 Reply message

回復(fù)消息是對(duì)請(qǐng)求消息的回應(yīng)。請(qǐng)求消息中的信息決定了回應(yīng)消息的目的地。處理請(qǐng)求和回應(yīng)的應(yīng)用程序控制著消息間的關(guān)聯(lián),這種關(guān)聯(lián)和隊(duì)列管理器沒(méi)有關(guān)系。消息自身帶有足夠的信息供應(yīng)用程序?qū)崿F(xiàn)這種關(guān)聯(lián)。

3.報(bào)文消息 Datagram message

數(shù)據(jù)報(bào)消息是不需要回復(fù)的消息,報(bào)文消息只是一次單向的信息傳送。

4.報(bào)告消息 Report message。

報(bào)告消息用于對(duì)一些系統(tǒng)故障的響應(yīng)。有些報(bào)告消息是由應(yīng)用程序創(chuàng)建的,有些報(bào)告消息是由隊(duì)列管理器創(chuàng)建的。后一種情況是由于遠(yuǎn)程隊(duì)列已經(jīng)滿或者遠(yuǎn)程隊(duì)列不存在引起消息不能正確發(fā)送。最初發(fā)送者條消息的應(yīng)用程序不能檢測(cè)到這種錯(cuò)誤,只有等遠(yuǎn)程隊(duì)列管理器創(chuàng)建了這樣一條報(bào)告消息并發(fā)往本地隊(duì)列管理器之后,應(yīng)用程序才能作相應(yīng)的處理。

隊(duì)列管理器把報(bào)告消息也用于其他目的,比如報(bào)告一些事件。消息可能有一個(gè)失效時(shí)間限制。如果一條消息在失效時(shí)間過(guò)后還沒(méi)有被某個(gè)應(yīng)用程序處理,該條消息將被隊(duì)列管理器從系統(tǒng)中清除。當(dāng)隊(duì)列管理器清除一條失效消息之后,它將創(chuàng)建一條報(bào)告消息,這條報(bào)告消息的目的地址由失效消息提供。

報(bào)告消息的另一個(gè)用途是確保消息的到達(dá)。應(yīng)用程序可以要求它們所發(fā)送的消息到達(dá)目的地后,他們收到一條報(bào)告消息,這叫做接收確認(rèn)(Confirmation of arrival)。與此相類似,應(yīng)用程序也可以要求當(dāng)另外一個(gè)程序取走這條消息時(shí)它們收到一條報(bào)告消息,這被叫做交付確認(rèn)(Confirmation of delivery)。這兩種情況,都是由隊(duì)列管理器創(chuàng)建報(bào)告消息,并把報(bào)告消息發(fā)送到適當(dāng)?shù)啬康牡亍?/p>

另外還一類特殊的消息叫觸發(fā)消息。觸發(fā)消息是由隊(duì)列管理器創(chuàng)建的一類特殊消息。WebSphere MQ的隊(duì)列管理器提供了一種當(dāng)滿足某一條件時(shí),自動(dòng)觸發(fā)應(yīng)用程序的機(jī)制,而觸發(fā)消息是觸發(fā)機(jī)制的重要組成部分。

應(yīng)用程序也可以定義新的消息類型。隊(duì)列管理器不能解釋這些類型,應(yīng)用程序設(shè)置的消息類型由一個(gè)范圍。這些類型值可用來(lái)區(qū)分不同類型的應(yīng)用程序在同一個(gè)輸入隊(duì)列中放入的消息。

消息長(zhǎng)度

最大消息長(zhǎng)度為 100 MB(其中 1 MB 等于 1 048 576 字節(jié)),缺省最大消息長(zhǎng)度是 4 MB。實(shí)際上,消息長(zhǎng)度受以下方面的影響:

  • 接收隊(duì)列定義的最大消息長(zhǎng)度

  • 隊(duì)列管理器定義的最大消息長(zhǎng)度

  • 傳輸隊(duì)列定義的最大消息長(zhǎng)度

  • 發(fā)送或接收應(yīng)用程序定義的最大消息長(zhǎng)度

  • 存儲(chǔ)消息的可用空間

所以有時(shí)可能需要由多個(gè)消息組成的信息才能滿足應(yīng)用程序的要求。

應(yīng)用程序如何發(fā)送和接收消息?

應(yīng)用程序使用 MQI 調(diào)用來(lái)實(shí)現(xiàn)發(fā)送和接收消息。

例如,要將消息放入隊(duì)列,應(yīng)用程序:

  1. 通過(guò)發(fā)出 MQI  MQOPEN調(diào)用打開(kāi)所需的隊(duì)列

  2. 發(fā)出 MQI  MQPUT調(diào)用以將消息放入隊(duì)列

另一個(gè)應(yīng)用程序可以通過(guò)發(fā)出MQI MQGET調(diào)用,從同一隊(duì)列取出消息




隊(duì)列

隊(duì)列的類型

按創(chuàng)建方法分類

  • 預(yù)定義隊(duì)列由管理員使用相應(yīng)的 MQSC 或 PCF 命令創(chuàng)建。 預(yù)定義隊(duì)列是永久的;它們的存在與應(yīng)用程序是否實(shí)用它們無(wú)關(guān),并且 WebSphere MQ 重新啟動(dòng)后繼續(xù)存在。

  • 動(dòng)態(tài)隊(duì)列在應(yīng)用程序發(fā)出設(shè)定模型隊(duì)列名的MQOPEN調(diào)用時(shí)創(chuàng)建的。被創(chuàng)建的隊(duì)列是基于一個(gè)模板隊(duì)列。 您可以使用 MQSC 命令 DEFINE QMODEL 創(chuàng)建模板隊(duì)列。動(dòng)態(tài)隊(duì)列繼承了模板隊(duì)列的屬性。模板隊(duì)列有一個(gè)屬性可以說(shuō)明動(dòng)態(tài)隊(duì)列是永久的還是臨時(shí)的。永久隊(duì)列在應(yīng)用程序和隊(duì)列管理器重新啟動(dòng)后繼續(xù)存在;臨時(shí)隊(duì)列在重新啟動(dòng)后消失。

按功能分類

1.        本地隊(duì)列(local queue):

一個(gè)本地隊(duì)列是一個(gè)物理上位于本地隊(duì)列管理器中的隊(duì)列。本地隊(duì)列實(shí)際上存在與本地系統(tǒng)的內(nèi)存或磁盤存儲(chǔ)終。本地隊(duì)列管理器控制隊(duì)列的訪問(wèn)。

       應(yīng)用程序可以“PUT”消息到本地隊(duì)列,也可以從本地隊(duì)列“GET”消息,另外程序還可以查詢或修改這些隊(duì)列的某些屬性。對(duì)隊(duì)列屬性的修改需要相應(yīng)的權(quán)限。

2.        遠(yuǎn)程隊(duì)列(remote queue):

       一個(gè)遠(yuǎn)程隊(duì)列屬于一個(gè)不與該應(yīng)用程序直接相連的隊(duì)列管理器。對(duì)這類隊(duì)列的訪問(wèn)包含有本地隊(duì)列管理器和遠(yuǎn)程隊(duì)列管理器的通信過(guò)程。這種通信涉及到通道。

       應(yīng)用程序可對(duì)遠(yuǎn)程隊(duì)列進(jìn)行某些操作,比如程序可以向一個(gè)遠(yuǎn)程隊(duì)列放一條消息,但程序不能從遠(yuǎn)程隊(duì)列中去消息。應(yīng)用程序只能從本地隊(duì)列讀取消息。

      應(yīng)用程序有兩種不同的方法可用來(lái)訪問(wèn)遠(yuǎn)程隊(duì)列。第一種是當(dāng)程序打開(kāi)一個(gè)遠(yuǎn)程隊(duì)列時(shí)同時(shí)提供隊(duì)列管理器名和隊(duì)列名兩個(gè)參數(shù)。這要求程序知道目的隊(duì)列屬于哪個(gè)隊(duì)列管理器。第二種方法是在本地隊(duì)列管理器上存在一個(gè)遠(yuǎn)程隊(duì)列的定義,這個(gè)定義包含有足夠的信息讓本地隊(duì)列管理器確定該遠(yuǎn)程隊(duì)列所在的隊(duì)列管理器。

       遠(yuǎn)程隊(duì)列定義中的目的隊(duì)列不一定是遠(yuǎn)程隊(duì)列管理器的本地隊(duì)列,它也可以是一個(gè)遠(yuǎn)程隊(duì)列定義

       應(yīng)用程序放一條消息到Q1,Q1是本地隊(duì)列管理器QM1上的一個(gè)遠(yuǎn)程隊(duì)列定義:Q2at QM2。QM2是遠(yuǎn)程隊(duì)列管理器。Q2是QM2上的一個(gè)遠(yuǎn)程隊(duì)列定義Q3 at QM3。Q3是QM3的一個(gè)本地隊(duì)列,經(jīng)過(guò)兩次傳送,消息最終到達(dá)Q3這個(gè)QM3的本地隊(duì)列。

       有多種原因使這種多跳(Multihop)傳送變得有意義。在一個(gè)TCP/IP網(wǎng)絡(luò)內(nèi)部,所有機(jī)器都有IP地址,IP協(xié)議本身處理節(jié)點(diǎn)間的路由選擇。但假設(shè)消息需要穿過(guò)不同類型的網(wǎng)絡(luò),這就需要中間件參加路由選擇。在圖中,QM2位于一臺(tái)連接TCP/IP網(wǎng)和SNA網(wǎng)的機(jī)器上,只需在QM2上提供一個(gè)遠(yuǎn)程隊(duì)列定義Q2:Q3 at QM3,就可以實(shí)現(xiàn)消息的跨網(wǎng)絡(luò)傳輸。

       因?yàn)閷?duì)遠(yuǎn)程隊(duì)列的訪問(wèn)總是涉及到隊(duì)列管理器之間的通信,因而我們需要定義其他一些資源,比如通道、傳輸隊(duì)列(Transmission queue)。

3.        傳輸隊(duì)列(Transmission queue):

       傳輸隊(duì)列是臨時(shí)存儲(chǔ)目標(biāo)為遠(yuǎn)程隊(duì)列管理器的消息的隊(duì)列。隊(duì)列管理器利用傳輸隊(duì)列把消息分階段地發(fā)向遠(yuǎn)程隊(duì)列。隊(duì)列管理器和消息移動(dòng)程序一起負(fù)責(zé)把數(shù)據(jù)傳送到遠(yuǎn)程隊(duì)列。當(dāng)隊(duì)列管理器收到把一條消息發(fā)往遠(yuǎn)程隊(duì)列的要求后,它把消息發(fā)送到一個(gè)與目的隊(duì)列管理器相關(guān)聯(lián)的傳輸隊(duì)列,傳輸隊(duì)列位于本地隊(duì)列管理器上。目的隊(duì)列管理器的名稱可能由應(yīng)用程序提供,也可以從遠(yuǎn)程隊(duì)列定義中得到。

       一個(gè)傳輸隊(duì)列是兩個(gè)隊(duì)列管理器之間的連接的一端。所有直接目的地是同一隊(duì)列管理器的消息都可放在同一個(gè)傳輸隊(duì)列上,這些消息的最終目的可能不一樣。把消息從一個(gè)隊(duì)列管理器傳送到另一個(gè)隊(duì)列管理器只需要一個(gè)傳輸隊(duì)列,然而也有可能在兩個(gè)隊(duì)列管理器之間存在著多個(gè)連接以提供不同的傳輸服務(wù),每個(gè)連接都帶有一個(gè)不同的傳輸隊(duì)列。

       傳輸隊(duì)列是由MCA處理的,MCA負(fù)責(zé)在隊(duì)列管理器之間可靠地傳送消息。MCA實(shí)際上是處理傳輸隊(duì)列上消息的MQI應(yīng)用程序。

4.        動(dòng)態(tài)隊(duì)列和模板隊(duì)列:

除了有固定定義的隊(duì)列之外,WebSphere MQ還為程序在它們執(zhí)行時(shí)提供了動(dòng)態(tài)地創(chuàng)建隊(duì)列的能力。例如,一個(gè)應(yīng)用程序作為某種服務(wù)的客戶,它可能創(chuàng)建一個(gè)動(dòng)態(tài)隊(duì)列,并通知服務(wù)器把對(duì)服務(wù)要求的響應(yīng)發(fā)送到該動(dòng)態(tài)隊(duì)列。當(dāng)然,這種情況也可以使用具有永久定義的隊(duì)列。為了簡(jiǎn)化在創(chuàng)建動(dòng)態(tài)隊(duì)列時(shí)所必需設(shè)置的許多參數(shù),動(dòng)態(tài)隊(duì)列總是基于模板隊(duì)列被創(chuàng)建的,模板隊(duì)列定義了動(dòng)態(tài)隊(duì)列的所有屬性。當(dāng)應(yīng)用程序試圖打開(kāi)一個(gè)模板隊(duì)列時(shí),WebSphere MQ就創(chuàng)建一個(gè)動(dòng)態(tài)隊(duì)列。WebSphere MQ為應(yīng)用提供了系統(tǒng)模板隊(duì)列。

動(dòng)態(tài)隊(duì)列也可以分成兩種,它們的生存周期和故障恢復(fù)特性不同。在創(chuàng)建臨時(shí)動(dòng)態(tài)隊(duì)列(Temorary dynamic queue)的應(yīng)用程序關(guān)閉時(shí),這些隊(duì)列將被刪除,隊(duì)列上的消息將丟失。這類動(dòng)態(tài)隊(duì)列不支持消息的持久性。如果隊(duì)列管理器發(fā)生故障重新啟動(dòng),臨時(shí)動(dòng)態(tài)隊(duì)列也不會(huì)被恢復(fù)。另一種動(dòng)態(tài)隊(duì)列是持久動(dòng)態(tài)隊(duì)列(Permanent dynamic queue)。只有當(dāng)一個(gè)應(yīng)用程序關(guān)閉持久動(dòng)態(tài)隊(duì)列時(shí)定義刪除選項(xiàng),持久動(dòng)態(tài)隊(duì)列才會(huì)被刪除。刪除持久動(dòng)態(tài)隊(duì)列的程序不一定是創(chuàng)建持久動(dòng)態(tài)隊(duì)列的程序,持久動(dòng)態(tài)隊(duì)列在隊(duì)列管理器重啟后會(huì)被恢復(fù),并且支持具有持久性的消息。

5.        啟動(dòng)隊(duì)列

啟動(dòng)隊(duì)列是在觸發(fā)中使用的隊(duì)列。如果隊(duì)列管理器將使用觸發(fā),則必須至少為此隊(duì)列管理器定義一個(gè)啟動(dòng)隊(duì)列。隊(duì)列管理器在觸發(fā)器事件發(fā)生時(shí)將觸發(fā)器消息放入啟動(dòng)隊(duì)列。觸發(fā)器事件是由隊(duì)列管理器檢測(cè)的條件的邏輯組合。例如,當(dāng)隊(duì)列上的消息數(shù)達(dá)到預(yù)定義深度時(shí),可能會(huì)生成觸發(fā)器事件。此事件使隊(duì)列管理器將觸發(fā)器消息放入指定的啟動(dòng)隊(duì)列。此觸發(fā)器消息由觸發(fā)器監(jiān)視器(即監(jiān)視啟動(dòng)隊(duì)列的特殊應(yīng)用程序)檢索。然后觸發(fā)器監(jiān)視器啟動(dòng)在觸發(fā)器消息中指定的應(yīng)用程序。

6.        群集傳輸隊(duì)列

每個(gè)在群集中的隊(duì)列管理器有一個(gè)稱為 SYSTEM.CLUSTER.TRANSMIT.QUEUE 的群集傳輸隊(duì)列。當(dāng)您定義隊(duì)列管理器時(shí),按缺省情況創(chuàng)建此隊(duì)列的定義。作為群集一部分的隊(duì)列管理器可以將群集傳輸隊(duì)列上的消息發(fā)送到在同一群集中的任何其它隊(duì)列管理器。 在路由解析期間,群集傳輸隊(duì)列優(yōu)先于缺省傳輸隊(duì)列。 當(dāng)隊(duì)列管理器是群集的一部分時(shí),缺省操作是使用 SYSTEM.CLUSTER.TRANSMIT.QUEUE,除非當(dāng)目標(biāo)隊(duì)列管理器不是此群集的一部分。

7.        死信隊(duì)列 (Dead letter queue)

死信(未傳遞的消息)隊(duì)列是存儲(chǔ)無(wú)法發(fā)送到其正確目的地的消息的隊(duì)列。有時(shí)候會(huì)出現(xiàn)隊(duì)列管理器不能把消息發(fā)送到目的地的情況,此時(shí)消息將被發(fā)送到某個(gè)死信隊(duì)列中。死信隊(duì)列中的消息常常暗示了系統(tǒng)可能出現(xiàn)的問(wèn)題。例如當(dāng)一條消息到達(dá)目的隊(duì)列管理器之后卻發(fā)現(xiàn)目的隊(duì)列并不存在?;蛘吣康年?duì)列出現(xiàn)不能接收信消息的情況,比如目的隊(duì)列已經(jīng)滿了,或者它被設(shè)置成不允許再加入新的消息。并不是所有的放消息操作的失敗都導(dǎo)致消息被放入死信隊(duì)列,例如,由于本地隊(duì)列出現(xiàn)錯(cuò)誤造成應(yīng)用程序不能“放”消息,此時(shí)MQI調(diào)用直接把錯(cuò)誤碼返回給應(yīng)用程序。

  有些錯(cuò)誤只能由死信隊(duì)列報(bào)告,例如,一條消息穿越網(wǎng)絡(luò)之后到達(dá)目的隊(duì)列管理器,卻發(fā)現(xiàn)目的隊(duì)列已滿。發(fā)現(xiàn)錯(cuò)誤的機(jī)器不同于最初“放”消息應(yīng)用程序所在的機(jī)器,甚至可能放消息的應(yīng)用程序已不在運(yùn)行狀態(tài)。此時(shí)目的隊(duì)列管理器把這條消息發(fā)往它所擁有的死信隊(duì)列,而不是簡(jiǎn)單地扔掉該條消息。這樣使得這次錯(cuò)誤是可見(jiàn)的,也給應(yīng)用程序提供了一個(gè)改正錯(cuò)誤的機(jī)會(huì)。

         死信隊(duì)列是WebSphere MQ面對(duì)遠(yuǎn)端系統(tǒng)錯(cuò)誤時(shí)的一種解決方案。應(yīng)用程序可以利用WebSphere MQ提供的其他一些工具來(lái)監(jiān)視并確保消息的可靠傳送和接收。

         在隊(duì)列管理器創(chuàng)建時(shí),系統(tǒng)會(huì)缺省創(chuàng)建一個(gè)死信隊(duì)列,隊(duì)列名是SYSTEM.DEAD.LETTER.QUEUE。建議在生產(chǎn)系統(tǒng)上,需要獨(dú)立創(chuàng)建一個(gè)死信隊(duì)列,而不使用系統(tǒng)缺省的死信隊(duì)列。

8.        命令隊(duì)列

命令隊(duì)列 SYSTEM.ADMIN.COMMAND.QUEUE 是用來(lái)存放由應(yīng)用管理程序放的具有PCF(programcommand format)的消息的隊(duì)列。該隊(duì)列主要用于編寫管理程序時(shí)使用。具體的使用將在后續(xù)章節(jié)介紹。在創(chuàng)建隊(duì)列管理器時(shí)將為每個(gè)隊(duì)列管理器自動(dòng)創(chuàng)建命令隊(duì)列。

9.        回復(fù)隊(duì)列

當(dāng)應(yīng)用程序發(fā)送請(qǐng)求消息時(shí),接收消息的應(yīng)用程序可以將回復(fù)消息發(fā)送給發(fā)送應(yīng)用程序。此回復(fù)消息放入一個(gè)稱為回復(fù)隊(duì)列的隊(duì)列中,它通常是發(fā)送應(yīng)用程序的本地隊(duì)列?;貜?fù)隊(duì)列的名稱由作為消息描述符一部分的發(fā)送應(yīng)用程序指定。

10.    別名隊(duì)列

       別名隊(duì)列實(shí)際上是本地隊(duì)列、遠(yuǎn)程隊(duì)列定義或隊(duì)列名表的另外一個(gè)名字。它是一種簡(jiǎn)單的名字到名字的映射,它允許應(yīng)用程序用另外一個(gè)名字來(lái)訪問(wèn)隊(duì)列。WebSphere MQ已經(jīng)為應(yīng)用程序屏蔽了許多底層系統(tǒng)細(xì)節(jié),特別是網(wǎng)絡(luò)通信的細(xì)節(jié),而別名隊(duì)列允許在不修改應(yīng)用程序的條件下訪問(wèn)其他名字的隊(duì)列。

隊(duì)列管理器

在WebSphere MQ中隊(duì)列管理器是基本的軟件系統(tǒng),隊(duì)列管理器可看成是隊(duì)列和其他對(duì)象的容器。WebSphere MQ中的每一個(gè)隊(duì)列都屬于一個(gè)隊(duì)列管理器,隊(duì)列管理器是為應(yīng)用程序和WebSphere MQ部件(一些管理工具)提供對(duì)隊(duì)列管理中對(duì)象的訪問(wèn)。

一個(gè)隊(duì)列管理器是WebSphere MQ中的一個(gè)基本的獨(dú)立的執(zhí)行單元。一臺(tái)機(jī)器上可以運(yùn)行一個(gè)或多個(gè)隊(duì)列管理器。

任何需要訪問(wèn)WebSphere MQ提供的服務(wù)的應(yīng)用程序都必須先和隊(duì)列管理器相連,和應(yīng)用程序相連的隊(duì)列管理器對(duì)該應(yīng)用程序而言就叫“本地隊(duì)列管理器”(Local Queue Manager),本地隊(duì)列管理器為程序提供MQI調(diào)用的支持。應(yīng)用程序可以操作、管理本地隊(duì)列管理器所擁有的各種資源,也可以向其他的隊(duì)列管理器發(fā)送消息。

應(yīng)用程序通過(guò)一種叫做MQI的編程接口向隊(duì)列管理器申請(qǐng)服務(wù)。這些服務(wù)包括“放”一條消息到隊(duì)列或從隊(duì)列“取”一條消息等一些基本操作。隊(duì)列管理器還使隊(duì)列成為可靠的存儲(chǔ)消息的地方,它也控制安全性管理,并提供一些特殊的隊(duì)列功能,比如觸發(fā)隊(duì)列。

為了減少應(yīng)用程序?qū)τ谒\(yùn)行環(huán)境的依賴性,WebSphere MQ的應(yīng)用程序可以和一個(gè)它不知道名字的隊(duì)列管理器相連,這個(gè)隊(duì)列管理器就是一臺(tái)機(jī)器上的缺省隊(duì)列管理器。如果程序在調(diào)用MQCONN時(shí),把隊(duì)列管理器名參數(shù)設(shè)置為空,MQCONN將返回與缺省的隊(duì)列管理器連接的句柄。

隊(duì)列管理器擁有每個(gè)隊(duì)列。隊(duì)列管理器負(fù)責(zé)維護(hù)它所擁有的隊(duì)列,以及將它接收到的所有消息存儲(chǔ)到相應(yīng)的隊(duì)列??梢杂蓱?yīng)用程序或隊(duì)列管理器將消息放入隊(duì)列,這些是它的正常操作的一部分。


通道

消息通道(Messagechannels)

消息通道是一種提供從一個(gè)隊(duì)列管理器到另一個(gè)隊(duì)列管理器的通信路徑。消息通道用在分布式的隊(duì)列把消息從一個(gè)隊(duì)列管理器發(fā)送到另一個(gè)隊(duì)列管理器。它們使應(yīng)用程序屏蔽了底層的通信協(xié)議。隊(duì)列管理器可能存在同種或異種平臺(tái)之間。為了實(shí)現(xiàn)隊(duì)列管理器之間的通信,您必需在一個(gè)隊(duì)列管理器中定義一個(gè)發(fā)送消息的通道對(duì)象,在另一個(gè)隊(duì)列管理器中定義一個(gè)接收消息的通道對(duì)象。消息通道是一個(gè)單向鏈接。它通過(guò)消息通道代理(message channel agents)把兩個(gè)隊(duì)列管理器連接起來(lái)。 

不要和MQI通道(MQI channel)通道混淆。MQI通道有兩種類型,分別是服務(wù)器連接(server-connection)和客戶器連接(client-connection)。

消息通道分類

消息通道的定義可以分為以下6種類型:

l  發(fā)送通道(Sender)

l  接收通道(Receiver)

l  服務(wù)器通道(Server)

l  請(qǐng)求器通道(Requester)

l  群集發(fā)送通道(Cluster sender)

l  群集接收通道(Cluster receiver)

消息通道的組合形式

如果要在隊(duì)列管理之間實(shí)現(xiàn)消息傳輸,必須要在兩個(gè)隊(duì)列管理器上都要定義相應(yīng)的通道。發(fā)送方和接收方通道的組合形式如下:

l  發(fā)送通道-接收通道(Sender-receiver )

l  請(qǐng)求器通道-服務(wù)器通道(Requester-server)

l  請(qǐng)求器通道-發(fā)送通道(Requester-sender (callback) )

l  服務(wù)器通道-接收通道(Server-receiver )

l  群集發(fā)送通道-群集接收通道(Cluster sender –cluster receiver)

注意:通道的組合形式有5種形式,每種組合方式是固定的,用戶不能隨意組合。每對(duì)通道的名稱必需相同例如:在發(fā)送通道-接收通道組合中,發(fā)送通道名和接收通道名必須一致,否則通道將無(wú)法啟動(dòng)。


消息通道用法 發(fā)送通道-接收通道(Sender-receiver)

用法:由一個(gè)系統(tǒng)的發(fā)送通道來(lái)啟動(dòng)通道,以便它可以發(fā)送消息到另一個(gè)系統(tǒng)。發(fā)送通道向接收通道發(fā)送啟動(dòng)請(qǐng)求。發(fā)送通道從傳輸隊(duì)列發(fā)送消息到接收通道。接收通道把消息放到目標(biāo)隊(duì)列。

請(qǐng)求器通道-服務(wù)器通道(Requester-server)

用法:

(1)由一個(gè)系統(tǒng)中的請(qǐng)求器通道來(lái)啟動(dòng)通道,以便它能從另一個(gè)系統(tǒng)接收到消息。 請(qǐng)求器通道向通道另一端的服務(wù)器通道發(fā)送請(qǐng)求來(lái)啟動(dòng)。服務(wù)器通道從傳輸隊(duì)列把消息發(fā)送到請(qǐng)求器通道。

(2) 服務(wù)器通道也能啟動(dòng)通道,并發(fā)送消息到請(qǐng)求器, 但這僅應(yīng)用于完全意義的服務(wù)器通道, 也即服務(wù)器通道定義中應(yīng)含有對(duì)方的連接名。一個(gè)完全意義的服務(wù)器通道可以由請(qǐng)求器通道啟動(dòng), 也可以發(fā)起和服務(wù)器通道的通訊。

(3) 最好不要手工去停止Server和Request通道,而是依靠Server通道的Discint的屬性來(lái)停止通道。

請(qǐng)求器通道-發(fā)送通道(Requester-sender (callback))

用法:請(qǐng)求器通道啟動(dòng)通道,發(fā)送通道終止這個(gè)會(huì)話。發(fā)送通道然后依據(jù)它的通道定義中的信息(稱為 callback)來(lái)重新啟動(dòng)會(huì)話。它把消息從傳輸隊(duì)列發(fā)送給請(qǐng)求器通道。最好不要手工去停止Sender和Request通道,而是依靠Sender 通道的Discint屬性來(lái)停止通道。

服務(wù)器通道-接收通道(Server-receiver)

用法:類似于發(fā)送通道-接收通道,但僅應(yīng)用在完全意義的服務(wù)器通道。也即服務(wù)器通道定義應(yīng)含有對(duì)方的連接名,通道的啟動(dòng)方是服務(wù)器通道。

群集發(fā)送通道(Cluster sender)

用法:在一個(gè)群集中,每個(gè)隊(duì)列管理器都有一個(gè)群集發(fā)送通道,通過(guò)它可以把送群集信息發(fā)送到其中一個(gè)隊(duì)列管理器資源管理器。隊(duì)列管理器通過(guò)這個(gè)通道也可以把消息發(fā)送到其他的隊(duì)列管理器。

群集接收通道(cluster receiver)

功能:在一個(gè)群集中,每一個(gè)隊(duì)列管理器都有一個(gè)群集接收通道。通過(guò)這個(gè)通道可以接收數(shù)據(jù)消息和關(guān)于群集的消息。

MQI通道

       MQI通道是WebSphere MQ 客戶端和服務(wù)器上的隊(duì)列管理器的通信的通道。當(dāng)客戶端應(yīng)用程序發(fā)出MQCONN或MQCONNX調(diào)用時(shí),才開(kāi)始建立連接。它是一個(gè)雙向的通道,可以負(fù)責(zé)發(fā)送和接收,被用作MQI調(diào)用的傳送和響應(yīng)。

一個(gè)MQI通道可以把一個(gè)客戶端連接到單個(gè)隊(duì)列管理器,MQI通道有兩種類型,它們定義了雙向的MQI通道。

客戶端連接通道(Client-connectionchannel)

這種類型為WebSphereMQ 的客戶端所使用。

服務(wù)器連接通道(Server-connectionchannel)

這種類型為運(yùn)行隊(duì)列管理器的服務(wù)器端所使用,運(yùn)行在WebSphere MQ 客戶端的應(yīng)用程序?qū)⑹褂眠@種通道進(jìn)行通信。

比較消息通道和MQI通道

消息通道與MQI通道之間的區(qū)別可以從兩方面進(jìn)行比較:

l  MQI通道是雙向的:一個(gè)MQI通道可以被用來(lái)發(fā)送請(qǐng)求,也可用來(lái)接收響應(yīng)。而消息通道則只能單向數(shù)據(jù)通信。如果要在兩個(gè)隊(duì)列管理器之間實(shí)現(xiàn)雙向通信,那么需要定義兩個(gè)消息通道,一個(gè)用來(lái)實(shí)現(xiàn)數(shù)據(jù)的發(fā)送,另一個(gè)用來(lái)實(shí)現(xiàn)數(shù)據(jù)的接收。

l  MQI通道的通信是同步的:當(dāng)一個(gè)MQI請(qǐng)求從客戶端發(fā)送服務(wù)器端時(shí),WebSphere MQ的客戶端在發(fā)送下一個(gè)請(qǐng)求之間必須要等待來(lái)自服務(wù)器端的響應(yīng)。而消息通道,在通道中傳輸?shù)南⑹桥c時(shí)間無(wú)關(guān)的。大量的消息可以從一個(gè)隊(duì)列管理器發(fā)送到另一個(gè)隊(duì)列管理器,發(fā)送隊(duì)列管理器不必等待來(lái)自接收隊(duì)列管理器的任何響應(yīng)。

進(jìn)程

進(jìn)程定義對(duì)象定義響應(yīng) WebSphere MQ 隊(duì)列管理器上的觸發(fā)器事件啟動(dòng)的應(yīng)用程序。進(jìn)程定義屬性包含應(yīng)用程序標(biāo)識(shí)、應(yīng)用程序類型和特定于應(yīng)用程序的數(shù)據(jù)。

群集

在使用分布式排隊(duì)的傳統(tǒng) WebSphere MQ 網(wǎng)絡(luò)中,每個(gè)隊(duì)列管理器是獨(dú)立的。如果隊(duì)列管理器需要將消息發(fā)送到另一個(gè)隊(duì)列管理器,則它必須定義一個(gè)傳輸隊(duì)列、一個(gè)到遠(yuǎn)程隊(duì)列管理器的通道,以及它要將消息發(fā)送到的每個(gè)隊(duì)列的遠(yuǎn)程隊(duì)列定義。

群集是一組以隊(duì)列管理器可以在不需要傳輸隊(duì)列、通道和遠(yuǎn)程隊(duì)列定義的情況下在單個(gè)網(wǎng)絡(luò)上彼此直接通信的方法設(shè)置的隊(duì)列管理器。

名稱列表

名稱列表是包含其它 WebSphere MQ 對(duì)象列表的 WebSphere MQ 對(duì)象。通常,應(yīng)用程序(如觸發(fā)器監(jiān)視器)使用名稱列表,它們用于標(biāo)識(shí)一組隊(duì)列。使用名稱列表的優(yōu)點(diǎn)是它獨(dú)立于應(yīng)用程序維護(hù);可以在不停止任何使用它的應(yīng)用程序的情況下更新它。并且,如果一個(gè)應(yīng)用程序失敗,則名稱列表不受影響,其它應(yīng)用程序可以繼續(xù)使用它。

名稱列表還與隊(duì)列管理器群集一起使用,以維護(hù)多個(gè) WebSphere MQ 對(duì)象引用的群集列表。

認(rèn)證信息對(duì)象

隊(duì)列管理器認(rèn)證信息對(duì)象(AUTHINFO)組成安全套接字層(SSL)安全性的WebSphere MQ 支持的部件。它提供使用LDAP 服務(wù)器檢查證書撤銷列表(CRL)所需的定義。CRL 允許認(rèn)證中心取消不再可信的證書。

本書描述對(duì)認(rèn)證信息對(duì)象使用setmqaut、dspmqaut、dmpmqautrcrmqobj、rcdmqimgdspmqfls命令。有關(guān) SSL 概述以及 AUTHINFO 的使用,請(qǐng)參閱 WebSphere MQ Security。

系統(tǒng)缺省對(duì)象

系統(tǒng)缺省對(duì)象是一組每次創(chuàng)建隊(duì)列管理器時(shí)自動(dòng)創(chuàng)建的對(duì)象定義。您可以復(fù)制和修改這些對(duì)象定義中的任何一個(gè),以在安裝時(shí)用于應(yīng)用程序。

缺省對(duì)象名具有項(xiàng) SYSTEM.DEFAULT;例如,缺省本地隊(duì)列是 SYSTEM.DEFAULT.LOCAL.QUEUE,并且缺省接收方通道是 SYSTEM.DEFAULT.RECEIVER。您無(wú)法重命名這些對(duì)象;這些名稱的缺省對(duì)象是必需的。

當(dāng)您定義對(duì)象時(shí),從相應(yīng)的缺省對(duì)象復(fù)制您不明確指定的任何屬性。例如,如果您定義本地隊(duì)列,則從缺省隊(duì)列 SYSTEM.DEFAULT.LOCAL.QUEUE 獲取您未指定的那些屬性。

請(qǐng)參閱附錄1, "系統(tǒng)和缺省對(duì)象"以獲取有關(guān)系統(tǒng)缺省的更多信息。


MQI(message queue interface)

MQI(消息隊(duì)列接口)有下列組成部分:

l  函數(shù)接口:應(yīng)用程序通過(guò)函數(shù)可以訪問(wèn)隊(duì)列管理器和它的部件。

l  數(shù)據(jù)結(jié)構(gòu):應(yīng)用程序使用提供的數(shù)據(jù)接口來(lái)是實(shí)現(xiàn)把數(shù)據(jù)傳遞給隊(duì)列管理器,或從隊(duì)列管理器中獲得數(shù)據(jù)。

l  基本數(shù)據(jù)類型:也是用來(lái)實(shí)現(xiàn)從隊(duì)列管理器傳遞數(shù)據(jù),或從隊(duì)列管理器中獲得數(shù)據(jù)。

控制命令

       以下是每個(gè) WebSphere MQ 控制命令的參考信息:

命令名

目的

amqmcert

管理 SSL 證書

amqmdain

配置或控制 WebSphere MQ 服務(wù)(僅 Windows 系統(tǒng))

crtmqcvx

轉(zhuǎn)換數(shù)據(jù)

crtmqm

創(chuàng)建本地隊(duì)列管理器

dltmqm

刪除隊(duì)列管理器

dmpmqaut

轉(zhuǎn)儲(chǔ)打開(kāi)對(duì)象的權(quán)限

dmpmqlog

轉(zhuǎn)儲(chǔ)日志

dspmq

顯示隊(duì)列管理器

dspmqaut

顯示打開(kāi)對(duì)象的權(quán)限

dmpmqcap

顯示處理程序容量和處理程序數(shù)

dspmqcsv

顯示命令服務(wù)器狀態(tài)

dspmqfls

顯示文件名

dspmqtrc

顯示格式化跟蹤輸出(HP-UX、Linux 和 Solaris)

dspmqrtn

顯示事務(wù)的詳細(xì)信息

endmqcsv

停止隊(duì)列管理器上的命令服務(wù)器

endmqlsr

停止隊(duì)列管理器上的偵聽(tīng)器進(jìn)程

endmqm

停止本地隊(duì)列管理器

endmqtrc

停止對(duì)實(shí)體的跟蹤(不用于 AIX)

rcdmqimg

向日志寫對(duì)象的映象

rcrmqobj

根據(jù)它們?cè)谌罩局械挠诚笾匦聞?chuàng)建一個(gè)對(duì)象

rsvmqtrn

提交或逆序恢復(fù)事務(wù)

runmqchi

啟動(dòng)通道啟動(dòng)器進(jìn)程

runmqchl

啟動(dòng)發(fā)送方或請(qǐng)求者通道

runmqdlq

啟動(dòng)死信隊(duì)列處理程序

runmqlsr

啟動(dòng)偵聽(tīng)器進(jìn)程

runmqsc

向隊(duì)列管理器發(fā)出 MQSC 命令

runmqtmc

調(diào)用客戶機(jī)的觸發(fā)器監(jiān)控器(僅 AIX 客戶機(jī))

runmqtrm

調(diào)用服務(wù)器的觸發(fā)器監(jiān)控器

setmqaut

更改打開(kāi)對(duì)象的權(quán)限

setmqcap

設(shè)置處理程序容量

setmqcrl

設(shè)置證書撤銷列表(CRL)服務(wù)器定義

setmqscp

設(shè)置服務(wù)連接點(diǎn)(僅 Windows 系統(tǒng))

strmqcsv

啟動(dòng)隊(duì)列管理器的命令服務(wù)器

strmqm

啟動(dòng)本地隊(duì)列管理器

strmqtrc

啟用跟蹤(不用于 AIX)

舉例
1.  此命令創(chuàng)建一個(gè)稱為 Paint.queue.manager 的缺省隊(duì)列管理器,創(chuàng)建系統(tǒng)和缺省對(duì)象,并請(qǐng)求兩個(gè)主日志文件和三個(gè)次日志文件:

crtmqm -c"Paint shop" -ll -lp 2 -ls 3 -q Paint.queue.manager

2. 下列命令刪除隊(duì)列管理器 travel 并且也抑制任何由該命令發(fā)出的消息。

dltmqm -z travel

3. 此命令立即結(jié)束名為 saturn.queue.manager 的隊(duì)列管理器。完成所有當(dāng)前 MQI 調(diào)用,但不允許新的調(diào)用。

endmqm -isaturn.queue.manager

“MQ的基本概念”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


當(dāng)前標(biāo)題:MQ的基本概念
網(wǎng)頁(yè)路徑:http://weahome.cn/article/ipsjei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部