MQ運維手冊-數(shù)據(jù)中心_第1頁
MQ運維手冊-數(shù)據(jù)中心_第2頁
MQ運維手冊-數(shù)據(jù)中心_第3頁
MQ運維手冊-數(shù)據(jù)中心_第4頁
MQ運維手冊-數(shù)據(jù)中心_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、MQ運維手冊MQ運維手冊交通銀行 張江數(shù)據(jù)中心 系統(tǒng)部 *A 新增 M 修改 D 刪除版本號日期修訂人審批人A/M/D概 要 描 述V0.12010-11-15伍建焜A全文創(chuàng)建目 錄 TOC o 1-3 h z u HYPERLINK l _Toc276405258 一、概念與對象 PAGEREF _Toc276405258 h 6 HYPERLINK l _Toc276405259 1.1 消息 (Message) PAGEREF _Toc276405259 h 6 HYPERLINK l _Toc276405260 1.2 隊列 (Queue) PAGEREF _Toc276405260

2、h 6 HYPERLINK l _Toc276405261 1.2.1 本地隊列 PAGEREF _Toc276405261 h 7 HYPERLINK l _Toc276405262 1.3 隊列管理器 (Queue Manager) PAGEREF _Toc276405262 h 10 HYPERLINK l _Toc276405263 1.4 通道 (Channel) PAGEREF _Toc276405263 h 11 HYPERLINK l _Toc276405264 1.4.1 通道類型 (Channel Type) PAGEREF _Toc276405264 h 11 HYPER

3、LINK l _Toc276405265 1.4.2 消息通道協(xié)議 (MCP) PAGEREF _Toc276405265 h 13 HYPERLINK l _Toc276405266 1.4.3 消息通道代理 (MCA) PAGEREF _Toc276405266 h 13 HYPERLINK l _Toc276405267 1.5 名稱列表 (Name List) PAGEREF _Toc276405267 h 13 HYPERLINK l _Toc276405268 1.6 分發(fā)列表 (Distribution List) PAGEREF _Toc276405268 h 14 HYPER

4、LINK l _Toc276405269 1.7 進程定義 (Process) PAGEREF _Toc276405269 h 14 HYPERLINK l _Toc276405270 1.8 認證信息 (Auth Info) PAGEREF _Toc276405270 h 14 HYPERLINK l _Toc276405271 1.9 客戶端和服務(wù)器端 (Client & Server) PAGEREF _Toc276405271 h 15 HYPERLINK l _Toc276405272 1.10 操作界面 (MQ Interface) PAGEREF _Toc276405272 h

5、15 HYPERLINK l _Toc276405273 1.11 應用程序 (MQ Application) PAGEREF _Toc276405273 h 15 HYPERLINK l _Toc276405274 二、工作原理 PAGEREF _Toc276405274 h 16 HYPERLINK l _Toc276405275 2.1 PUT和GET PAGEREF _Toc276405275 h 16 HYPERLINK l _Toc276405276 2.2 協(xié)同工作 PAGEREF _Toc276405276 h 17 HYPERLINK l _Toc276405277 2.3

6、互連通信 PAGEREF _Toc276405277 h 17 HYPERLINK l _Toc276405278 2.3.1 消息通道 (Message Channel) PAGEREF _Toc276405278 h 17 HYPERLINK l _Toc276405279 2.3.2 消息路由 (Message Routing) PAGEREF _Toc276405279 h 18 HYPERLINK l _Toc276405280 2.3.3 消息傳送 PAGEREF _Toc276405280 h 19 HYPERLINK l _Toc276405281 三、控制與管理 PAGERE

7、F _Toc276405281 h 20 HYPERLINK l _Toc276405282 3.1 MQ 控制命令 PAGEREF _Toc276405282 h 20 HYPERLINK l _Toc276405283 3.1.1 MQ 隊列管理器控制 PAGEREF _Toc276405283 h 20 HYPERLINK l _Toc276405284 3.1.2 MQ 命令服務(wù)器控制 PAGEREF _Toc276405284 h 22 HYPERLINK l _Toc276405285 3.1.3 MQ 監(jiān)聽器控制 PAGEREF _Toc276405285 h 23 HYPERL

8、INK l _Toc276405286 3.1.4 MQ觸發(fā)監(jiān)控器控制 PAGEREF _Toc276405286 h 24 HYPERLINK l _Toc276405287 3.2 MQ 對象管理 PAGEREF _Toc276405287 h 25 HYPERLINK l _Toc276405288 3.2.1 隊列管理器管理 PAGEREF _Toc276405288 h 26 HYPERLINK l _Toc276405289 3.2.2 隊列管理 PAGEREF _Toc276405289 h 26 HYPERLINK l _Toc276405290 3.2.3 通道管理 PAGE

9、REF _Toc276405290 h 27 HYPERLINK l _Toc276405291 3.2.4 進程定義管理 PAGEREF _Toc276405291 h 29 HYPERLINK l _Toc276405292 3.2.5 名稱列表管理 PAGEREF _Toc276405292 h 29 HYPERLINK l _Toc276405293 3.2.6 認證信息管理 PAGEREF _Toc276405293 h 30 HYPERLINK l _Toc276405294 3.3 基本隊列操作 PAGEREF _Toc276405294 h 30 HYPERLINK l _To

10、c276405295 3.4 MQ 配置信息 PAGEREF _Toc276405295 h 31 HYPERLINK l _Toc276405296 3.4.1 UNIX 配置文件 PAGEREF _Toc276405296 h 31 HYPERLINK l _Toc276405297 3.5 MQ 管理方式 PAGEREF _Toc276405297 h 33 HYPERLINK l _Toc276405298 3.5.1 本地管理 PAGEREF _Toc276405298 h 33 HYPERLINK l _Toc276405299 3.5.2 遠程管理 PAGEREF _Toc276

11、405299 h 33 HYPERLINK l _Toc276405300 3.6 日志 (Log) PAGEREF _Toc276405300 h 36 HYPERLINK l _Toc276405301 3.6.1 隊列管理器日志 PAGEREF _Toc276405301 h 36 HYPERLINK l _Toc276405302 3.6.2 檢查點(Checkpoint) PAGEREF _Toc276405302 h 38 HYPERLINK l _Toc276405303 3.6.3 記錄和復原 (Record & Recover) PAGEREF _Toc276405303 h

12、 39 HYPERLINK l _Toc276405304 3.6.4 備份和恢復(Backup & Restore) PAGEREF _Toc276405304 h 40 HYPERLINK l _Toc276405305 3.6.5 導出日志(Dump Log) PAGEREF _Toc276405305 h 41 HYPERLINK l _Toc276405306 四、通信與配置 PAGEREF _Toc276405306 h 42 HYPERLINK l _Toc276405307 4.1 消息路由 PAGEREF _Toc276405307 h 42 HYPERLINK l _Toc

13、276405308 4.1.1 消息路由過程 PAGEREF _Toc276405308 h 42 HYPERLINK l _Toc276405309 4.1.2 缺省傳輸隊列 PAGEREF _Toc276405309 h 43 HYPERLINK l _Toc276405310 4.1.3 隊列管理器別名 PAGEREF _Toc276405310 h 43 HYPERLINK l _Toc276405311 4.1.4 多級跳 PAGEREF _Toc276405311 h 43 HYPERLINK l _Toc276405312 4.1.5 傳輸中的消息 PAGEREF _Toc276

14、405312 h 43 HYPERLINK l _Toc276405313 4.2 通道配置 PAGEREF _Toc276405313 h 45 HYPERLINK l _Toc276405314 4.2.1 Sender (QM1) - Receiver (QM2) PAGEREF _Toc276405314 h 46 HYPERLINK l _Toc276405315 4.2.2 Server (QM1) - Receiver (QM2) PAGEREF _Toc276405315 h 46 HYPERLINK l _Toc276405316 4.2.3 Server (QM1) - R

15、equester (QM2) PAGEREF _Toc276405316 h 47 HYPERLINK l _Toc276405317 4.2.4 Sender (QM1) - Requester (QM2) PAGEREF _Toc276405317 h 48 HYPERLINK l _Toc276405318 4.2.5 通道啟動命令 PAGEREF _Toc276405318 h 49 HYPERLINK l _Toc276405319 4.2.6 通道監(jiān)控程序 PAGEREF _Toc276405319 h 49 HYPERLINK l _Toc276405320 4.3 通道的屬性

16、PAGEREF _Toc276405320 h 50 HYPERLINK l _Toc276405321 4.3.1 通道會話 PAGEREF _Toc276405321 h 50 HYPERLINK l _Toc276405322 4.3.2 通道協(xié)議 PAGEREF _Toc276405322 h 53 HYPERLINK l _Toc276405323 4.4通道的狀態(tài) PAGEREF _Toc276405323 h 54 HYPERLINK l _Toc276405324 4.4.1 公共狀態(tài) (Common Status) PAGEREF _Toc276405324 h 54 HYP

17、ERLINK l _Toc276405325 4.4.2 當前狀態(tài) (Current-Only Status) PAGEREF _Toc276405325 h 55 HYPERLINK l _Toc276405326 4.4.3 通道狀態(tài)分析 PAGEREF _Toc276405326 h 56 HYPERLINK l _Toc276405327 4.5互連配置舉例 PAGEREF _Toc276405327 h 60 HYPERLINK l _Toc276405328 4.5.1 單向傳送 PAGEREF _Toc276405328 h 61 HYPERLINK l _Toc27640532

18、9 4.5.2 雙向傳送 PAGEREF _Toc276405329 h 62 HYPERLINK l _Toc276405330 4.5.3 隊列與隊列管理器別名 PAGEREF _Toc276405330 h 63 HYPERLINK l _Toc276405331 4.5.4 三級跳 (Multi-hopping) PAGEREF _Toc276405331 h 64 HYPERLINK l _Toc276405332 4.5.5 四級跳 (Multi-hopping) PAGEREF _Toc276405332 h 65 HYPERLINK l _Toc276405333 五、群集 P

19、AGEREF _Toc276405333 h 68 HYPERLINK l _Toc276405334 5.1相關(guān)概念 PAGEREF _Toc276405334 h 68 HYPERLINK l _Toc276405335 5.1.1 配置庫(Repository) PAGEREF _Toc276405335 h 68 HYPERLINK l _Toc276405336 5.1.2 配置庫隊列管理器(Repository Queue Manager) PAGEREF _Toc276405336 h 69 HYPERLINK l _Toc276405337 5.1.3 群集通道(Cluster

20、 Channel) PAGEREF _Toc276405337 h 69 HYPERLINK l _Toc276405338 5.1.4 群集隊列(Cluster Queue) PAGEREF _Toc276405338 h 69 HYPERLINK l _Toc276405339 5.1.5 群集傳輸隊列(Cluster transmission queue) PAGEREF _Toc276405339 h 70 HYPERLINK l _Toc276405340 5.2群集管理 PAGEREF _Toc276405340 h 70 HYPERLINK l _Toc276405341 5.2

21、.1 對象屬性 PAGEREF _Toc276405341 h 70 HYPERLINK l _Toc276405342 5.2.2 管理命令 PAGEREF _Toc276405342 h 70 HYPERLINK l _Toc276405343 5.2.3 管理任務(wù)舉例 PAGEREF _Toc276405343 h 71 HYPERLINK l _Toc276405344 5.3群集配置舉例 PAGEREF _Toc276405344 h 72 HYPERLINK l _Toc276405345 5.3.1 例1 PAGEREF _Toc276405345 h 72 HYPERLINK

22、l _Toc276405346 5.3.2 例2 PAGEREF _Toc276405346 h 74 HYPERLINK l _Toc276405347 5.3.3 例3 PAGEREF _Toc276405347 h 76 HYPERLINK l _Toc276405348 5.3.4 例4 PAGEREF _Toc276405348 h 79 HYPERLINK l _Toc276405349 5.3.5 例5 PAGEREF _Toc276405349 h 81 HYPERLINK l _Toc276405350 5.3.6 例6 PAGEREF _Toc276405350 h 83

23、HYPERLINK l _Toc276405351 六、廣播通信 PAGEREF _Toc276405351 h 87 HYPERLINK l _Toc276405352 6.1 分發(fā)列表 (Distribution List) PAGEREF _Toc276405352 h 87 HYPERLINK l _Toc276405353 6.1.1 概念 PAGEREF _Toc276405353 h 87 HYPERLINK l _Toc276405354 6.1.2 配置舉例 PAGEREF _Toc276405354 h 88 HYPERLINK l _Toc276405355 七、客戶端

24、PAGEREF _Toc276405355 h 90 HYPERLINK l _Toc276405356 7.1 配置 PAGEREF _Toc276405356 h 90 HYPERLINK l _Toc276405357 7.1.1 Server 端配置 PAGEREF _Toc276405357 h 91 HYPERLINK l _Toc276405358 7.1.2 Client 端配置 PAGEREF _Toc276405358 h 91 HYPERLINK l _Toc276405359 7.2 用戶出口 PAGEREF _Toc276405359 h 96 HYPERLINK l

25、 _Toc276405360 7.2.1 用戶出口路徑 PAGEREF _Toc276405360 h 96 HYPERLINK l _Toc276405361 7.2.2 排錯 PAGEREF _Toc276405361 h 97一、概念與對象 WebSphere MQ 本質(zhì)上是一種消息中間件,用于保證異構(gòu)應用之間的消息傳遞。應用程序通過MQ 接口進行互連通信,可以不必關(guān)心網(wǎng)絡(luò)上的通信細節(jié),從而將更多的注意力集中于應用本身。MQ 在所有的平臺上有統(tǒng)一的操作界面,這使得應用程序可以很方便地移植到各種操作系統(tǒng)中。 WebSphere MQ 運行環(huán)境中有較多的概念,其中有一部分是可以作為實體進行的

26、操作的,稱為MQ 對象。每一個對象都有各自的屬性,不同的屬性決定了對象的特性和工作方式。消息、隊列、隊列管理器、通道是MQ 中最重要的概念和對象。1.1 消息 (Message) 消息是WebSphere MQ 中最小的概念,本質(zhì)上就是一段數(shù)據(jù),它能被一個或多個應用程序所理解,是應用程序之間傳遞的信息載體。消息可以大致分成兩部分: 應用數(shù)據(jù)體和消息數(shù)據(jù)頭。 消息數(shù)據(jù)頭:是對消息屬性的描述,這段信息往往被隊列管理器用來確定對消息的處理。消息數(shù)據(jù)頭可以由應用程序或系統(tǒng)的消息服務(wù)程序共同產(chǎn)生,它包含了消息在傳送中的必要信息,如目標隊列管理器的名字,目標隊列的名字,以及消息的其它一些屬性。 應用數(shù)據(jù)體

27、:是應用間傳送的實質(zhì)的數(shù)據(jù)消息,它可以是字串、數(shù)據(jù)結(jié)構(gòu)甚至二進制數(shù)據(jù)。包含的內(nèi)容可以是文本、文件、聲音、圖像等任何數(shù)據(jù),這些數(shù)據(jù)只對特定的應用具有特定的含義。所以,應用數(shù)據(jù)體的結(jié)構(gòu)和內(nèi)容由應用程序定義,通信雙方需要事先約定報文格式。 消息可以分成持久 (Persistent) 消息和非持久 (Non-Persistent) 消息。所謂“持久”的意思,就是在WebSphere MQ 隊列管理器重啟動后,消息是否仍然能保持。1.2 隊列 (Queue) 可以簡單地把隊列看成一個容器,用于存放消息。隊列按其定義可分成本地隊列、遠程隊列定義、別名隊列定義、模型隊列定義。如圖1.1所示。其中只有本地隊列

28、是真正意義上的隊列實體,可以存放消息。遠程隊列定義和別名隊列定義只是一個隊列定義,指向另一個隊列實體。遠程隊列定義指向的是其它隊列管理器中的隊列,而別名隊列指向的是本地隊列管理器中的隊列。模型隊列有一點特殊,它本身只是一個隊列定義,描述了模型的屬性,但是當打開模型隊列的時候,隊列管理器會以這個定義為模型,創(chuàng)建一個本地隊列,被稱為動態(tài)隊列。 一個隊列管理器下轄很多個消息隊列,但每個隊列卻只能屬于一個隊列管理器。隊列在它所屬的管理器中只能有一個唯一的名字,不能與同一個管理器的其它隊列重名。當消息被添加到隊列中,它缺省將被加到最后,與之相反,刪除消息缺省卻是從頭開始。圖1.1 隊列的分類1.2.1

29、本地隊列 本地隊列按功能又可分成初始化隊列,傳輸隊列,目標隊列和死信隊列。初始化隊列用做消息觸發(fā)功能。傳輸隊列只是暫存待傳的消息,在條件許可的情況下,通過管道將消息傳送其它的隊列管理器。目標隊列是消息的目的地,可以長期存放消息。如果消息不能送達目標隊列,也不能再路由出去,則被自動放入死信隊列保存。圖1.2 各種隊列在消息傳送時的作用 普通隊列能夠真正長期存放消息的本地隊列,我們稱之為普通隊列。一般說來,應用程序只對其做簡單的 MQGET 和MQPUT 以收發(fā)消息,這也是系統(tǒng)中用得最多的消息隊列。通常在不致引起混淆的情況下,我們也將普通本地隊列簡稱為本地隊列。 傳輸隊列要送往遠地的消息將放入傳輸

30、隊列。在適當?shù)臅r候,消息會被從傳輸隊列中取出并送往遠地,最終放入遠端的本地隊列。所以,從本地系統(tǒng)的立場來看,傳輸隊列是用來暫時存放輸出消息的。傳輸隊列本身是一個本地隊列,它與普通隊列的差別是傳輸隊列具有的屬性USAGE (XMITQ)。 初始化隊列初始化隊列是配合消息觸發(fā)用的,如果隊列上配置有消息觸發(fā)功能,則需要指定另一個相關(guān)隊列以存放觸發(fā)消息,這個隊列就是初始化隊列。初始化隊列本質(zhì)上就是一個普通本地隊列。 目標隊列在消息通信的時候,消息最終的目的地稱為目標隊列。如果消息是通過傳輸隊列轉(zhuǎn)發(fā),WebSphere MQ 會自動為消息體添加一個傳輸消息頭,其數(shù)據(jù)結(jié)構(gòu)為MQXQH。其中的RemoteQ

31、Name 和RemoteQMgrName 兩個域指明了目標隊列和目標隊列管理器。如果消息被放入死信隊列,則WebSphere MQ 會自動為消息體添加一個死信消息頭,其數(shù)據(jù)結(jié)構(gòu)為MQDLH,其中DestQName 和DestQMgrName 兩個域指明了原消息的目標隊列和目標隊列管理器。 死信隊列死信隊列本質(zhì)上是普通的本地隊列,由于隊列管理器的DEADQ 屬性指定的該隊列為死信隊列,所以隊列管理器認為無法投遞的消息都被自動送去該隊列。由于無法投遞的消息很像信件投遞中的死信,故而得名。隊列管理器在將消息放入死信隊列的時候,會自動為消息體添加一個死信消息頭,其數(shù)據(jù)結(jié)構(gòu)為MQDLH。其中Reason

32、 域指明了消息無法投遞的原因。 應答隊列由于消息在發(fā)送后需要有對方的回應。這種回應可以是系統(tǒng)自動產(chǎn)生的報告消息,也可以是對方應用生成的應答消息。就應用而言,這些回應消息的目標隊列就是應答隊列。應答隊列通常設(shè)置在消息頭 (MQMD) 的ReplyToQ 域中,它也總是與消息頭中的另一個域ReplyToQMgr 一起使用。 命令隊列指的是WebSphere MQ 隊列管理器中預定義的SYSTEM.ADMIN.COMMAND. QUEUE。任何MQSC命令都可以送往該隊列,并被隊列管理器的命令服務(wù)器 (Command Server)接收處理。 別名隊列別名隊列只是一種隊列定義,它自身只是隊列的邏輯名

33、字,并不是隊列實體本身。別名隊列的TARGQ 屬性指明了其代表的目標隊列名稱,目標隊列通常是本地隊列。其實別名隊列只是提供了隊列名稱之間的映射關(guān)系,可以將別名隊列看作是指針,指向其目標隊列。注意,這里的目標隊列自身又可以是一個別名隊列,指向下一個目標隊列。然而,在對別名隊列打開 (MQOPEN) 操作時,只允許別名隊列指向的目標隊列是一個本地普通隊列,即一層映射關(guān)系。如果存在上述的多層映射關(guān)系,則報錯MQRC_ALIAS_BASE_Q_TYPE_ERROR。通過別名定義,WebSphere MQ 也可以動態(tài)改變消息流向。比如:某程序在代碼中指定消息寫入隊列A,但是您希望在不變動代碼的情況下將消

34、息寫入隊列 B。這時只要定義別名 B,使之指向A即可。再如:某隊列C是可讀可寫的本地隊列,管理員希望它對于一類程序只可讀,對另一類程序只可寫,這時可以對C定義兩個別名D和E,D只允許讀,E只允許寫。也就是說,本地隊列C的屬性為GET(ENABLED) 且 PUT(ENABLED),將D的屬性設(shè)置為GET(ENABLED) 且PUT(DISABLED),E的屬性為GET(DISABLED) 且PUT(ENABLED)。將D和E分別提供給上述兩類程序使用,這樣可以完全避免應用程序的誤操作。 遠程隊列遠程隊列與別名隊列類似,也只是一個隊列定義,用來指定遠端隊列管理器中的隊列。使用了遠程隊列定義,程序

35、就不需要知道目標隊列的位置 (所在的隊列管理器) 。遠程隊列定義包括目標隊列管理器名和目標隊列名,而這種隊列定義對于訪問地的應用程序是透明的。這種技術(shù)不但使應用程序只需要對一個簡單的隊列名操作,而且可以在線地通過修改遠程隊列定義,而動態(tài)改變路由。0 模型隊列模型隊列定義了一套本地隊列的屬性集合,一旦打開模型隊列,隊列管理器會按這些屬性動態(tài)地創(chuàng)建出一個本地隊列。模型隊列的DEFTYPE 屬性可以取值PERMDYN 和TEMPDYN,分別代表永久動態(tài)隊列和臨時動態(tài)隊列。(1)永久動態(tài)隊列永久動態(tài)隊列由模型隊列動態(tài)創(chuàng)建,并可以永久存在。在調(diào)用MQOPEN 時創(chuàng)建,以后就和普通的本地隊列一樣工作。在調(diào)

36、用MQCLOSE 時,缺省情況下會保留消息和隊列,當然也可以通過設(shè)置關(guān)閉選項 (Close Option) 的來清除消息甚至刪除永久動態(tài)隊列。(2)臨時動態(tài)隊列臨時動態(tài)隊列也是由模型隊列動態(tài)創(chuàng)建,但只在會話 (Session) 中臨時存在。在調(diào)用MQOPEN 時創(chuàng)建,在同一個線程中MQCLOSE 時關(guān)閉并自動刪除。MQCLOSE 時無所謂關(guān)閉選項 (Close Option) 的取值。1.3 隊列管理器 (Queue Manager)隊列管理器構(gòu)建了獨立的WebSphere MQ的運行環(huán)境,它是消息隊列的管理者,用來維護和管理消息隊列。一臺機器上可以創(chuàng)建一個或多個隊列管理器,每個隊列管理器有各

37、自的名字,通常情況下,它不能與網(wǎng)絡(luò)中的其它隊列管理器重名。如果我們把隊列管理器比作是數(shù)據(jù)庫,那么隊列就是其中的一張表,消息就是表中的一條記錄。隊列管理器是負責向應用程序提供消息服務(wù)的機構(gòu)。在WebSphere MQ中,隊列管理器集成了對象的定義、配置、管理、調(diào)度以及提供各種服務(wù)的功能于一身。WebSphere MQ的系統(tǒng)管理工具提供了對系統(tǒng)部件配置與管理的功能,應用程序必須首先連接到隊列管理器,然后在隊列管理器的控制下對各種對象進行操作。WebSphere MQ 中的隊列管理器可以含有很多個隊列,但一個隊列只能屬于一個隊列管理器。一個操作系統(tǒng)平臺可以創(chuàng)建一個隊列管理器,也可以創(chuàng)建多個隊列管理器

38、。隊列管理器、隊列、通道等等都是WebSphere MQ的對象,所有的對象都有各自的屬性,有些屬性必須在對象創(chuàng)建的時候指定,有些可以在創(chuàng)建以后更改。1.4 通道 (Channel)通道是兩個隊列管理器之間的一種單向的點對點的通信連接,消息在通道中只能單向流動。如果需要雙向交流,可以建立一對通道,一來一去。站在隊列管理器的角度,這一對通道可以按消息的流向分成輸入通道和輸出通道。通過配置,對于放入本地傳輸隊列中的消息,隊列管理器會自動將其通過輸出通道發(fā)出,送入對方的遠程目標隊列。兩個隊列管理器之間可以有多條通道負責傳輸不同的內(nèi)容,這樣設(shè)計往往是為了將不同優(yōu)先級的消息錯開,運行于不同速率的網(wǎng)絡(luò)連接上

39、?;蛘呒幢闶撬型ǖ蓝歼\行于相同的網(wǎng)絡(luò)物理連接上,也可以將不同大小的消息傳送分開,以免小數(shù)據(jù)傳送被大文件所堵塞。如果多條通道共享一條網(wǎng)絡(luò)物理連接,通道的速率之和受限于網(wǎng)絡(luò)速度。這樣可以增加傳送的并發(fā)度但并不能增加整體的傳送速度。在通道上可以配置不同的通信協(xié)議,這樣就使得編程接口與通信協(xié)議無關(guān)。通道兩端的配置必須匹配,且名字相同,否則無法連通。隊列管理器之間的通信是通過配置通道來實現(xiàn)的,通道兩側(cè)的隊列管理器對這個通道的相關(guān)參數(shù)應該能對應起來,一個通道只能用一種通信協(xié)議,但不同的通道可以有不同的通信協(xié)議??梢姡ǖ朗羌茉O(shè)在通信協(xié)議之上的對象,架設(shè)在不同通信協(xié)議上的通道在應用層看來都大同小異。1.4

40、.1 通道類型 (Channel Type)WebSphere MQ 用通道類型屬性(CHLTYPE)約定了通信雙方在連接握手協(xié)議中的主動方和被動方以及應用消息的流向??蛇x以下這些類型:SDR Sender: 握手協(xié)議的主動方,消息的發(fā)送方RCVR Receiver: 握手協(xié)議的被動方,消息的接收方SVR Server: 在握手協(xié)議中可以是主動方也可以是被動方,消息的發(fā)送方RQSTR Requester: 在握手協(xié)議中可以是主動方也可以是被動方,消息的接收方CLNTCONN Client Connection: 在Client-Server連接時,定義客戶端連接定義表(Client Chann

41、el Definition Table) 時使用。握手協(xié)議的主動方,消息的發(fā)送方SVRCONN Server Connection: 在Client-Server連接時,定義服務(wù)器端連接時使用。握手協(xié)議的被動方,消息的接收方CLUSSDR Cluster Sender: 在群集中發(fā)送配置信息和應用消息。握手協(xié)議的主動方,消息的發(fā)送方CLUSRCVR Cluster Receiver。在群集中接收配置信息和應用消息。握手協(xié)議的被動方,消息的接收方通信雙方的通道類型配對并不是可以隨意排列組合的,共有六種,如圖1.3所示。圖中細線箭標表示握手協(xié)議中的主動連接,粗線箭標表示應用消息流向。消息在所有的通

42、道上都是單向傳送的。Sender/Receiver是所有連接中最簡單、最常用的一種。Sender是通道主動方,也是消息發(fā)送方。Requester/Server也是常用的一種連接方式。Requester是通道主動方,但通道連接后,它作為消息接收方,Server是消息發(fā)送方。Server/Receiver與Sender/Receiver類似,Server是消息的發(fā)送方,也是連接的主動方。與Sender 定義類似,Server定義中必須指定CONNAME參數(shù)。Sender/Requester的連接過程稍微復雜一些,Requester首先與Sender連接,在通知對方連接參數(shù)后連接斷開。Sender

43、進行反向連接,消息也是反向傳送的。這種反向連接的方式,稱為 Callback Connection。Sender Connection/Receiver Connection 與Sender/Receiver 方式相同。用于Client/Server 之間的MQI 通道。Cluster Sender/Clueter Receiver 與Sender/Receiver 方式相同。用于群集中隊列管理器之間的連接。由于Sender/Receiver、Server/Receiver 的連接主動方和消息發(fā)送方相同,所以可以在發(fā)送端設(shè)定通道觸發(fā) (Channel Trigger)。由于Sender/Rec

44、eiver、Server/Receiver、Requester/Server的連接被動方事先不需要知道主動方的連接參數(shù),所以可以用于連接主動端是動態(tài)地址的應用場合。由于Sender/Requester 有反向建立連接的功能,所以常常用于雙向安全認證。圖1.3 通道類型的配對1.4.2 消息通道協(xié)議 (MCP)消息通道協(xié)議是WebSphere MQ用來傳遞消息時使用的通信協(xié)議。MCP(Message Channel Protocol) 可使用多種底層通信協(xié)議傳遞消息(LU6.2, DECNet .)。消息通道協(xié)議使得消息的傳送獨立于通信協(xié)議,應用程序通過統(tǒng)一的接口與MQ打交道,而不再需要關(guān)心通信

45、層使用的是TCP/IP 還是SNA。目前MCP 支持的通信協(xié)議有LU6.2、DECNet 和TCP/IP。1.4.3 消息通道代理 (MCA)消息通道代理 (MCA,Message Channel Agent) 本質(zhì)上是一個通信程序,它用來在隊列管理器之間傳遞消息。通道可以以進程的方式工作,即獨立的MCA 進程。也可以以線程的方式嵌入系統(tǒng)MCA 進程中工作。對于前者,根據(jù)不同的MCP,發(fā)送端進程和接收端進程的MCA 名通常是不同的。1.5 名稱列表 (Name List)名稱列表是WebSphere MQ 的一種對象,它實質(zhì)上是多個其它WebSphere MQ 對象的名稱集合。其內(nèi)容由多個字串

46、組成,中間用逗號隔開,每個字串就是一個對象名稱。名稱列表本身無法代表它所含的對象,例如無法對名稱列表進行MQPUT 或MQGET操作,類似的操作應該由分發(fā)列表 (Distribution List) 完成。定義名稱列表只是定義了一個集合,往往是為了方便應用訪問多個對象。比如應用程序動態(tài)地從名稱列表中讀出操作對象并依次進行操作,如果操作的對象有所增減,只需要修改名稱列表即可。名稱列表使管理人員可以在不修改應用的前提下,通過動態(tài)地增減名稱列表中的內(nèi)容來進行管理。名稱列表多用于群集 (Cluster) 環(huán)境中指定一個隊列管理器同時屬于多個群集的情況,這時名稱列表的內(nèi)容就是多個群集的名稱集合。名稱列表

47、可以用于以下一些對象屬性:QMgr.REPOSNLQMgr.SSLCRLNLQueue.CLUSNLChannel.CLUSNLWebSphere MQ 中每個對象都有各自的屬性,它們中的大多數(shù)是可以創(chuàng)建后修改的。這里,我們采用“對象.屬性”的記號方式表示對象的屬性,例Queue.CLUSNL 表示隊列的CLUSNL 屬性。以下同。1.6 分發(fā)列表 (Distribution List)分發(fā)列表可以使WebSphere MQ 應用程序一次將一條消息同時發(fā)送到多個隊列上。這里的一次發(fā)送指調(diào)用一次MQPUT 或MQPUT1,多個目標隊列可以是本地隊列也可以遠程隊列,如果多個遠程隊列的目標隊列管理器

48、相同,則在網(wǎng)絡(luò)上只需要傳送一次即可,節(jié)省了網(wǎng)絡(luò)開銷。當消息到達目標隊列管理器后,再自動分發(fā)到各個目標隊列中,當然這要求源隊列管理器和目標隊列管理器都支持分發(fā)列表功能。分發(fā)列表的操作是可以在一個交易中完成的,也就是說,多個隊列的發(fā)送是可以一起提交或回滾的。1.7 進程定義 (Process)進程定義對象用于WebSphere MQ 的觸發(fā)機制中,用來描述觸發(fā)程序的對象。這個程序可以是一個操作系統(tǒng)程序,可以是一個MQ 應用,也可以是一個CICS 交易,在進程定義的屬性中需要設(shè)定觸發(fā)程序的路徑、名稱、參數(shù)等等信息。在消息觸發(fā)環(huán)境中,一旦觸發(fā)條件滿足即可引起觸發(fā),隊列管理器在生成觸發(fā)消息的時候會參考進

49、程定義,將定義中某些屬性被抄入觸發(fā)消息頭 (MQTM 結(jié)構(gòu)) 中,形成觸發(fā)消息。該觸發(fā)消息被觸發(fā)監(jiān)控器讀走并處理,監(jiān)控器可以根據(jù)MQTM 觸發(fā)消息頭中的信息啟動相應的進程。1.8 認證信息 (Auth Info)認證信息 (Authentication Information) 定義了SSL 認證所需要的證書吊銷列表 (CRL,Certificate Revocation List) 所在的LDAP 服務(wù)器,同時定義了連入該LDAP 服務(wù)器所需的用戶名和口令。1.9 客戶端和服務(wù)器端 (Client & Server) WebSphere MQ 分成客戶端和服務(wù)器端,只有服務(wù)器端有對象的概念,

50、所以只有服務(wù)器端的應用程序可以對本地對象進行直接操作??蛻舳送ㄟ^MQI 通道與服務(wù)器端相連接,客戶端應用程序發(fā)出的所有操作指令都通過該通道傳送到服務(wù)器,在服務(wù)器端執(zhí)行后結(jié)果返回客戶端。通常情況下,客戶端的應用程序代碼與服務(wù)器端相同,在程序編譯時連接的庫文件不同。1.10 操作界面 (MQ Interface) 應用程序通過操作界面與 WebSphere MQ 打交道,這里的操作界面就是消息隊列接口(Message Queue Interface,MQI)。MQI 實際上是一套編程接口,負責處理應用程序向WebSphere MQ 提交的各種操作請求,應用程序完全不需要關(guān)心 WebSphere M

51、Q 的內(nèi)部結(jié)構(gòu)與具體實現(xiàn),如消息隊列,傳輸隊列等等。 當應用程序通過 MQI 送出一條消息到遠程隊列,隊列管理器會在它的消息數(shù)據(jù)頭中加上路由信息,消息被轉(zhuǎn)入傳輸隊列,等待送出。MQI 的操作非常簡單直觀,如:MQOPEN、MQCLOSE、MQGET、MQPUT 等等。 由于MQ 的互連通信是通過存儲轉(zhuǎn)發(fā)機制完成的,所以操作與傳輸是異步的。這意味著應用程序通過操作界面將消息發(fā)送出去時,消息首先存儲在本地,當通信暢通時再被轉(zhuǎn)發(fā)。應用程序可以繼續(xù)處理自己的邏輯,而不必等待消息傳達對方。1.11 應用程序 (MQ Application) 應用程序可以是商業(yè)的或用戶自行開發(fā)的含有對 WebSphere

52、 MQ操作的程序。MQI提供了支持的有平臺的通用編程接口。應用程序只要能夠調(diào)用相應的庫函數(shù),它就可以操作WebSphere MQ。這里介紹了WebSphere MQ中的基本概念和對象,其中最核心的部分是消息、隊列、隊列管理器和通道。對于編程設(shè)計人員,通常更關(guān)心消息和隊列,對于維護管理人員,通常會更關(guān)心隊列管理器和通道。二、工作原理 WebSphere MQ 的工作原理的核心就是存儲轉(zhuǎn)發(fā)。在單個隊列管理器的環(huán)境中,隊列可以用于存儲應用間傳遞的消息,從而使應用程序在各自環(huán)節(jié)上進行處理,并通過隊列形成環(huán)環(huán)相扣的處理流程。在多個隊列管理器的環(huán)境中,消息可以跨平臺進行流動,從而使整個處理流程在分布式計算

53、環(huán)境中完成。2.1 PUT和GET WebSphere MQ的應用程序可以通過MQ界面 (MQI,MQ Interface)進行操作。實際上,MQI 提供了有限的API,其中最本質(zhì)的兩個動作是PUT和GET。PUT指應用程序放一條消息放入到隊列中,GET則相反,應用程序?qū)⒁粭l消息從隊列中取出。WebSphere MQ通過隊列機制來完成消息排隊和傳遞的工作,從而使應用程序之間實現(xiàn)松耦合的聯(lián)系。如圖2.1所示,應用程序A 產(chǎn)生消息,通過PUT調(diào)用放入隊列中,應用程序B將消息取出并進行相應的處理,消息的報文格式及內(nèi)容決定了應用程序B處理的具體工作。這樣就實現(xiàn)了應用程序A到B之間的單向消息傳遞,如果需

54、要雙向傳遞消息則必須再類似地約定反向隊列。圖2.1 應用通過隊列傳遞消息 應用程序設(shè)計的時候必須約定雙方的報文格式,如果用通用格式 (如XML)則需考慮由此帶來的靈活性和信息冗余,在兩者之間平衡選擇。在運行環(huán)境中,還需要考慮PUT和GET的頻率與速度,以免消息有在隊列中堆積起來。 WebSphere MQ提供的遠程隊列機制可以將目標隊列設(shè)定到另外一個隊列管理器中,這樣應用程序A和B就可以在兩臺機器上運行而不改動任何代碼,應用程序A仍然做著相同的PUT操作將消息放入隊列中,該消息會自動路由到另一個隊列管理器中的隊列中,應用程序B從該隊列中GET消息,與原先一樣地處理。也就是說,這種配置結(jié)構(gòu)上的改

55、變對應用程序是完全透明的。WebSphere MQ 的這種特性使得其應用的擴展性極佳,任何應用在設(shè)計之初并不需要考慮太多的性能及擴展性問題,在需要時可以很方便地將應用中任何一部分拆到其它的機器上,實現(xiàn)分布式計算。圖2.2 應用通過隊列跨網(wǎng)絡(luò)傳遞消息2.2 協(xié)同工作 通常說來,一個應用系統(tǒng)會由多個應用模塊組成,一個處理流程也會由多個處理步驟組成。它們之間可能是串行的關(guān)系,也可能是并行的關(guān)系。在WebSphere MQ應用設(shè)計中,可以自然地將多個模塊或多個步驟設(shè)計成不同的應用程序,而它們之間的中間數(shù)據(jù)則通過消息的方式傳遞,用隊列暫存。如圖2.3所示:這樣一來,應用系統(tǒng)會有以下好處: 1. 結(jié)構(gòu)清晰

56、,容易并行開發(fā)和調(diào)試。 2. 擴展性極好,能夠很容易地布署到跨平臺環(huán)境中。 3. 靈活性好,一旦流程改變了,可以較容易地進行修改。圖2.3 協(xié)同工作2.3 互連通信2.3.1 消息通道 (Message Channel)WebSphere MQ跨平臺的互連通信是依靠隊列管理器之間的消息通道實現(xiàn)的,消息通道就是消息傳遞的管道,架設(shè)在隊列管理器之間,消息從一頭流入從另一頭流出,消息的內(nèi)容和次序完全不變。配置通道時需要注意通道在兩個隊列管理器中同名,且類型要配對。2.3.2 消息路由 (Message Routing)首先拿現(xiàn)實生活中寄信做例子來類比WebSphere MQ中的一些基本概念,從而理解

57、WebSphere MQ的工作原理?,F(xiàn)實生活中家家戶戶都可能有一個通信地址,對應著一個存放到達信件的信箱。每一封寄出的信件總是先到本地郵局,通過郵局之間的信件交換,到達對方所在的郵局,最后到達對方的信箱里。中間的郵路越復雜,時間就越長。這里的郵局相當于WebSphere MQ中的隊列管理器,信箱相當于隊列,信件相當于消息。每一封信件都有信封和信瓤兩部分,信封上面往往有收信人通信地址和發(fā)信人通信地址,信瓤里是真正的內(nèi)容 (如圖2.4所示)。WebSphere MQ中的消息也一樣,它分成消息頭和消息體兩部分。消息頭是消息的屬性集合,含有目標隊列管理器名和目標隊列名,WebSphere MQ就是利用

58、這段消息來找到目標隊列的。消息體是消息的內(nèi)容,可以是任意的一段內(nèi)存信息。圖2.4 信封和信瓤 WebSphere MQ依靠每條消息頭上所含的路由信息,將消息準確地送達目的地。路由信息中的遠程隊列管理器名指的是遠端系統(tǒng)的名字,遠程隊列名指的是遠端系統(tǒng)中的目標隊列名。一個完整的隊列名應該包含兩部分:隊列管理器名和隊列名,格式為queue_namequeue_manager_name。兩部分名字的長度上限都是48字節(jié),這兩部分名字構(gòu)成了消息路由的最基本的信息,算法其實很簡單:如果隊列管理器名未標明,則缺省加上本地隊列管理器的名字。隊列名會缺省地匹配本地普通隊列,而隊列管理器名會缺省地匹配本地隊列管理

59、器名。一般說來,建議傳輸隊列名與遠程隊列管理器同名。消息傳送過程如下: 1. 應用程序通過MQI發(fā)送消息 2. WebSphere MQ查看queue_manager_name是否是本地隊列管理器 a) 如果是的,將消息放入本地的名為queue_name的消息隊列中 b) 如果不是,將消息放入名為queue_manager_name的傳輸隊列中 3. MCP會把傳輸隊列中的消息送達遠端 4. 遠端將消息放入遠端系統(tǒng)中名為 queue_name 的消息隊列中 5. 遠端的應用程序從遠端的本地隊列中取得消息 這種辦法提供了簡單的路由功能,但有一個明顯的缺點,直接使用全名會要求應用程序了解軟件的網(wǎng)絡(luò)

60、結(jié)構(gòu)分布,哪些隊列在哪里。這有悖于WebSphere MQ對應用程序隱藏網(wǎng)絡(luò)細節(jié)的設(shè)計初衷。所以,在跨隊列管理器的應用中,通常使用別名隊列和遠程隊列來指定對方隊列的名字,從而將隊列的分布信息保留在配置中。2.3.3 消息傳送 在實現(xiàn)消息的跨隊列管理器之間的傳送時,通常會在本地隊列管理器上配置遠程隊列和傳輸隊列,在遠端的隊列管理器上配置本地隊列,并通過通道將兩者連接起來。如圖2.5所示,這里的遠程隊列只是一個定義并無隊列實體,也就是說遠程隊列不能存放消息。應用程序一旦將消息通過MQPUT送出,則立刻放入傳輸隊列中。傳輸隊列暫時存放待由通道發(fā)送的消息,一旦通道連通且條件允許,系統(tǒng)通信程序MCA會立

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論