ibmMQ-第四章

第四章WebSphere MQ 的管理
目标
5.	学习和掌握WebSphere MQ的管理,管理任务包括创建、启动、修改、查看、停止和删除WebSphere MQ对象(队列管理器,队列,群集,进程,名字列表,和通道)。
6.	掌握WebSphere MQSC和PCF命令 。
7.	学习WebSphere MQ配置。
8.	了解WebSphere MQ安全性。
9.	了解WebSphere MQ事务性。
10.	学习WebSphere MQ死信队列处理程序。

4.1 本地和远程管理
WebSphere MQ可以从本地或者远程管理对象。 

本地管理是对在本地系统上定义的任何队列管理器执行管理任务。也可以访问其它系统,例如通过 TCP/IP 终端仿真程序 telnet,对其他系统进行管理。在 WebSphere MQ 中,认为是本地管理,因为没有通道定义,它们之间的通信是由操作系统提供的。

WebSphere MQ 也支持远程管理,可以从本地系统上发出一条命令到远程系统上运行。例如,您可以发出一条命令修改远程队列管理器上的队列定义。如果需要进行远程管理,则需要有相应的通道定义,远程系统上的队列管理器和命令服务器必须正在运行,但您不必登录到远程系统。 在非 Windows 系统的平台上,有些命令不能用这种方式发出,特别是创建或启动队列管理器和启动命令服务器。要执行这种任务,您必须登录到远程系统并从那里发出命令或创建一个进程来处理您的命令。但在 Windows 系统上,您可使用 WebSphere MQ 服务管理单元来实现这个功能。 

4.2 使用命令管理 WebSphere MQ
有三种命令集合,可用于管理 WebSphere MQ,分别是控制命令、MQSC 命令和 PCF 命令。
4.2.1控制命令
控制命令是用来维护队列管理器本身的管理命令。 关于控制命令将在”第六章 WebSphere 控制命令”作详细地介绍。

4.2.2WebSphere MQ 脚本(MQSC)命令
MQSC命令是用来管理队列管理器对象,包括队列管理器本身、通道、队列和进程定义。 可以使用 runmqsc 向队列管理器发出 MQSC 命令。命令的输入有两种方式,一种是交互式命令,另一种是从ASCII 文本文件中重定向输入命令。在这两种方式中,命令的格式是相同的。 

runmqsc 命令有三种运行模式: 
•	验证模式,用这种方式在本地队列管理器上验证 MQSC 命令,但实际上并不运行 。
•	直接模式,用这种方式在本地队列管理器上运行 MQSC 命令 。
•	间接模式,用这种方式在远程队列管理器上运行 MQSC 命令 。

使用MQSC命令
使用MQSC命令的规则
	当使用 MQSC 命令时,应该遵循以下规则: 
•	每个命令的第一参数是动词,第二个参数是名词。第三个参数可能是对象名或对象统配符。随后的参数没有次序关系。如果参数有一个相应的值,则值必须紧跟在和它相关的参数之后。 
•	可以用空格和逗号分隔关键字、括号和值。 
•	在命令的开始或结束和参数、标点符号和值之间可以有任意多个空格。例如,以下命令是有效的: 
  	ALTER QLOCAL  ('Account'  )            TRIGDPTH  (  1)
•	不允许重复参数。
•	字符串中可以包含空格、小写字母或特殊字母,但必须包含在单引号中,而且不能包含下列特殊字符: 
o	句话(.) 
o	前斜杠(/) 
o	下划线(_) 
o	百分号(%) 
如果字符串本身包含引号,则引号用两个单引号替代。如果小写字母没有用单引号包含,则将被自动转换成大写。 
•	不包含字符的字符串(即,在两个引号之间没有空格)被认为是('') 或(' ')。 
•	左圆括号后跟着右圆括号,它们之间没有重要的信息,例如 NAME ( ),这被认为是无效。 
•	关键字不区分大小写 - AltER、alter 或 ALTER 都是同样的含义。 
•	一些参数定义同义词。 例如,DEF 总是 DEFINE 的同义词,因此 DEF QLOCAL 是有效的。但是,同义词不仅仅是最小字符串;DEFI 不是 DEFINE 有效的同义词。 
注: 
DELETE 参数没有同义词。 
有特殊意义的字符
创建MQSC 命令时,以下字符有特殊意义: 
  	空格用作分隔符。多个空格相当于一个空格,包含在引号(')中的字符串除外。 
, 	逗号用作分隔符。多个逗号相当于一个逗号,包含在引号(')中的字符串除外。 
' 	单引号表明字符串的开始或结束。所有被包含在引号中的字符,WebSphere MQ将不进行转换处理。计算字符串长度时,不包括包含的引号。 
'' 	WebSphere MQ 将一个字符串中的两个引号一起作为一个引号看待,并且字符串没有结束。计算字符串长度时,将双引号作为一个字符。 
( 	一个左圆括号表明参数列表的开始。 
) 	一个右圆括号表明参数列表的结束。 
: 	冒号表示包含的范围。例如(1:5)意思是(1、2、3、4、5)。此方法仅可在 TRACE 命令中使用。 
* 	星号表示‘所有’。例如,DISPLAY TRACE (*) 指显示所有跟踪,DISPLAY QUEUE (PAY*) 指显示所有名称以 PAY 开头的队列。 
当您需要在一个字段中使用这些特殊字符时,您必须将整个字符串包含在单引号中。 
创建命令脚本
命令脚本的规则如下: 
•	每个命令都必须以新行开始。 
•	在不同平台上,关于命令行的长度和记录格式的可能会有区别。如果希望脚本能适用于不同平台,则每行的实际长度应该限定为 72 个字符。  
•	每一行不必以键盘控制字符结束(例如,tab)。 
•	如果行上的最后非空格字符是: 
o	减号(-),表明命令将从下一行的开始继续。 
o	加号(+),表明命令将从下一行的第一个非空格字符继续。如果您使用 + 继续一个命令,则记住要在下个参数前保留至少一个空格(z/OS 除外)。 
•	当命令重新组合成单个字符串时,行末使用的 + 和 – 被忽略。 
•	忽略第一个位置中以星号(*)开始的行,这代表文件中的注释行。空白行将被忽略。 
•	MQSC 命令属性名称限制为 8 个字符。 

MQSC 命令在其它平台上都可用,包括 OS/400(R) 和 z/OS。《WebSphere MQ 脚本(MQSC)命令参考》 包含每个 MQSC 命令和它的语法的描述。 

WebSphere MQ 对象的命名规则

WebSphere MQ 队列、进程、名称列表、通道和存储类对象存在于各自独立的对象名字空间中,因此不同类型的对象可以有相同的名称。但是,同一类型中的对象不能同名。(例如,本地队列不能和模型队列有相同的名称。)WebSphere MQ 中的名称都区分大小写;住不包含在引号中的小写字符都将转换为大写。 

用于命名WebSphere MQ 对象的字符集如下所示: 
•	大写 A-Z 
•	小写 a-z 
•	数字 0-9 
•	句号(.) 
•	前斜杠(/) 
•	下划线(_) 
•	百分号(%)。 
注: 
1.	不允许首字符为空格或嵌入空格。 
2.	首字母或尾字母不能为下划线。 
3.	少于完整字段长度的任何名称都可在其右边添加空格以达到规定长度。被队列管理器返回的短名称总是在其右边填满空格。 
4.	任何名称结构(例如,使用句号或下划线)对队列管理器而言都是无意义的。 
5.	队列名称可长达 48 个字符。 
6.	系统缺省的对象名称请参看附录。

4.2.3PCF 命令
WebSphere MQ 可编程命令格式(PCF)命令使得管理任务能编写到应用程序中。在程序中可以创建队列和进程定义和更改队列管理器。PCF 命令和MQSC 命令具有相同的命令集。 可使用 WebSphere MQ 管理接口(MQAI)可以更容易访问PCF 消息。 

PCF的原理
	PCF定义了命令和回复消息,应用程序通过这些命令和回复消息实现和队列管理器之间的信息交换,通过WebSphere MQ的应用程序可以实现对MQ对象的管理包括:队列管理器,进程定义,队列和通道。应用程序可以通过一个本地队列管理器集中管理网络中的任何本地和远程管理器。
	每一个队列管理器有一个管理队列,应用程序可以发送PCF命令消息到管理队列中,每一个队列管理器也有一个命令服务器,它是为管理队列中的消息而服务。因此在网络中的任何队列管理器可以处理PCF消息,通过使用定义的回复队列,回复消息可以被返回给应用程序。PCF命令和回复消息是使用MQI进行发送和接收的。

WebSphere MQ 管理接口(MQAI)
在WebSphere MQ for Windows, AIX, iSeries, Linux, HP-UX, and Solaris and WebSphere MQ for OS/2 Warp版本,都支持 WebSphere MQ Administration Interface(MQAI)。

MQAI是WebSphere MQ 提供的一种实现发送和接收PCF的接口。MQAI通过使用数据报(data bags)来处理对象的属性,这样比直接使用PCF更简单。

MQAI通过传递参数到数据包的方法,从而提供了更简单的访问PCF消息的编程接口。这样只要一条语句就可以实现一个结构。编程人员不需要处理数组和分配空间,也不需要了解PCF的消息结构。
	MQAI通过发送PCF消息到命令服务器并等待回复消息来管理WebSphere MQ,如图所示。

 
图:MQAI的原理图









4.3 WebSphere MQ 配置
本节主要描述在 Windows 系统上和在 UNIX 系统上更改配置信息。
4.3.1在 Windows 系统上更改配置信息
WebSphere MQ所有配置信息都存储在 Windows 注册表中。您可使用 WebSphere MQ 服务管理单元或使用 amqmdain 命令编辑配置信息。 
建议使用 WebSphere MQ 服务管理单元修改配置信息。不要直接编辑注册表系统文件,因为这如果对编辑注册表失败,可能会严重影响 WebSphere MQ 系统或Windows 操作系统的运行。 

4.3.2 在 UNIX 系统上更改配置信息
在 UNIX 平台上,可以更改以配置文件中的 WebSphere MQ 属性: 
•	WebSphere MQ 配置文件(mqs.ini),它的属性将影响整个WebSphere MQ节点系统,每个节点有一个mqs.ini文件。 
•	队列管理器配置文件(qm.ini),它的属性仅影响某个队列管理器,在节点中的每个队列管理器都有一个qm.ini文件。 
配置文件中包含一个或多个节,每节都是为一个专门功能服务,如日志功能、通道功能和可安装服务。 
因为 WebSphere MQ 配置文件用于维护和队列管理器相关的数据,不合法的或不正确的配置文件可能导致一些或全部 MQSC 命令失败。同样,应用程序不能与在 WebSphere MQ 配置文件中没有定义的队列管理器连接。 
对配置文件所做的任何修改都不会立即生效,只有重新启动队列管理器才生效。 
编辑配置文件前,最好先备份它。 编辑的方式有两种:一种是自动的,在节点上使用更改队列管理器配置的命令 ;另一种是手工的,使用标准文本编辑器 。
如果您在配置文件属性上设置了非法值,则系统忽略此值并会提示错误信息。 
当创建新队列管理器时,最好先备份 WebSphere MQ 配置文件和新队列管理器配置文件。
如果出现以下情况时,可能需要编辑配置文件,例如: 
•	丢失配置文件。(如果可以,从备份中恢复。) 
•	需要移动一个或多个队列管理器到新目录中。 
•	需要更改缺省队列管理器。 
根据以下优先级设置配置文件属性值: 
•	在命令行上输入的参数优先于在配置文件中定义的值。 
•	qm.ini 文件中定义的值优先于 mqs.ini 文件中定义的值 
WebSphere MQ 配置文件(mqs.ini)
WebSphere MQ 配置文件 mqs.ini 包含和节点上所有队列管理器都相关的信息。它在安装期间自动创建。 WebSphere MQ UNIX 系统版的 mqs.ini 文件在 /var/mqm 目录中。它包含: 
•	队列管理器的名称 
•	缺省队列管理器的名称 
•	和每个文件关联的文件位置 
如图显示 WebSphere MQ 配置文件的示例: 

#***********************************************************************#
#* Module Name: mqs.ini                                                  *#
#* Type       : WebSphere MQ Configuration File                            *#
#* Function   : Define WebSphere MQ resources for the node                    *#
#***********************************************************************#
AllQueueManagers:
#***********************************************************************#
#* The path to the qmgrs directory, below which queue manager data                *#
#* is stored                                                              *#
#***********************************************************************#
DefaultPrefix=/var/mqm
 
LogDefaults:
   LogPrimaryFiles=3
   LogSecondaryFiles=2
   LogFilePages=104
   LogType=CIRCULAR
   LogBufferPages=0
   LogDefaultPath=/var/mqm/log
 
QueueManager:
   Name=saturn.queue.manager
   Prefix=/var/mqm
   Directory=saturn!queue!manager
 
QueueManager:
   Name=pluto.queue.manager
   Prefix=/var/mqm
   Directory=pluto!queue!manager
 
DefaultQueueManager:
   Name=saturn.queue.manager

队列管理器配置文件 (qm.ini)
队列管理器配置文件 qm.ini, 包含和特定队列管理器相关的信息。每个队列管理器都有一个队列管理器配置文件。创建队列管理器时,将自动创建此文件。 
qm.ini 文件保存在队列管理器的目录树的根中。例如,队列管理器 QMNAME 的配置文件的路径和名称是: /var/mqm/qmgrs/QMNAME/qm.ini
队列管理器名称最大长达 48 个字符。 
如图显示了在 WebSphere MQ UNIX 系统版中队列管理器配置文件的配置属性。 

#*******************************************************************#
#* Module Name: qm.ini                                               *#
#* Type       : WebSphere MQ queue manager configuration file             *#
#  Function   : Define the configuration of a single queue manager            *#
#*******************************************************************#
ExitPath:
   ExitsDefaultPath=/var/mqm/exits
 
Service:
   Name=AuthorizationService
   EntryPoints=9
 
ServiceComponent:
   Service=AuthorizationService
   Name=MQ.UNIX.auth.service
   Module=/opt/mqm/bin/amqzfuno.o 1
   ComponentDataSize=0
 
Service:
   Name=NameService
   EntryPoints=5
 
ServiceComponent:
   Service=NameService
   Name=MQ.DCE.name.service
   Module=/opt/mqm/lib/amqzfa 2
   ComponentDataSize=0
 
Log:
   LogPrimaryFiles=3
   LogSecondaryFiles=2
   LogFilePages=1024
   LogType=CIRCULAR
   LogBufferPages=0
   LogPath=/var/mqm/log/saturn!queue!manager/
 
XAResourceManager:
  Name=DB2 Resource Manager Bank
  SwitchFile=/usr/bin/db2swit
  XAOpenString=MQBankDB
  XACloseString=
  ThreadOfControl=THREAD
 
 
CHANNELS:
  MaxChannels = 20         ; Maximum number of Channels allowed.
  MaxActiveChannels = 100  ; Maximum number of Channels allowed to be
                           ; active at any time.  
TCP:                       ; TCP/IP entries.
  KeepAlive = Yes          ; Switch KeepAlive on

4.4 WebSphere MQ 安全性
WebSphere MQ 队列管理器传递的信息可能都是有价值的数据,因此您需要使用授权系统来保证未授权的用户无法访问您的队列管理器。所以需要考虑以下安全性控制: 

谁可以管理 WebSphere MQ 
你可以定义一些用户通过命令来管理WebSphere MQ。
谁可以使用 WebSphere MQ 对象 
您可以定义哪些用户(通常是应用程序)可以使用 MQI 调用和 PCF 命令执行以下操作: 
•	连接到队列管理器。 
•	访问类似队列、名字列表和进程的对象,访问这些对象的方式。 
•	访问 WebSphere MQ 消息。 
•	访问与消息相关联的上下文信息。 
通道安全性 
您需要确保用于将消息发送到远程系统的通道可以访问必需的资源。您还需要确保该通道被已授权的用户操纵。 

管理 WebSphere MQ 的权限
WebSphere MQ 管理员有执行以下任务的权限: 
•	使用命令(包含为其它用户授权 WebSphere MQ 授权的命令) 
•	访问 WebSphere MQ Windows 版上的管理单元 
要成为 WebSphere MQ 管理员,您必须是 mqm 组的成员(或是 Windows 系统上的管理员组的成员)。mqm 组是在安装 WebSphere MQ 时自动创建的;可以把其他用户加入到mqm组中,也可以把用户从mqm组中删除。 
在 UNIX 平台上,还创建了 mqm 的用户。所有 WebSphere MQ 对象都属于mqm用户。 
在 Windows 系统上,Administrator组的成员也可以管理任何队列管理器。您还可以在域控制器上创建 mqm 组,并将其添加到本地 mqm 组。有些命令必需只有属于mqm组的成员才可以操作,例如,创建队列管器crtmqm。但要执行以下操作,您不需要成为 mqm 组的成员: 
•	使用PCF 命令或 MQSC 命令。 
•	从应用程序发出 MQI 调用(除非您要在 MQCONNX 调用上使用快速路径绑定)。 
•	使用 crtmqcvx 命令。 
•	使用 dspmqtrc 命令。 
使用WebSphere MQ 对象的权限
队列管理器、队列、进程、名称列表和认证信息(authinfo)对象都是从使用 MQI 调用或 PCF 命令的应用程序访问的。这些资源是被WebSphere MQ保护,所以应用程序需要有许可权来访问它们。 
不同的主体组可以将不同类型的访问权限授权相同的对象。例如,对于特定队列,可能允许一个组执行放入和获取操作;可能仅允许另一个组浏览队列(带有浏览选项的 MQGET)。类似地,一些组可能已经放入和获取了队列权限,但未被允许改变队列的属性或删除队列。 
一些操作是特别敏感的,应该限制为特权用户使用。例如: 
•	访问一些特殊的队列,例如传输队列或命令队列 SYSTEM.ADMIN.COMMAND.QUEUE 
•	运行使用全部 MQI 上下文选项的程序 
•	创建和删除应用程序队列 
所有对象的完全控制许可权是自动给予创建对象的用户标识和 mqm 组的成员的(以及给予 Windows 系统上的本地管理员组的成员的)。 

4.5 WebSphere MQ 事务性支持
应用程序可以把一些列更新组合成一个工作单元。这些更新通常是逻辑相关的,为了保持数据完整性,所有的更新必须成功,如果一部分更新成功,一部分更新失败,将失去数据完整性。
工作单元成功完成后就提交。此时,所有在工作单元内所做的更新都将变成永久的并且是不可逆的。如果工作单元失败了,所有的更新都将被回滚。同步点协调是工作单元用来实现提交或回滚保证数据完整的进程。 
本地工作单元上唯一更新的那些资源是 WebSphere MQ 队列管理器的资源。这里同步点协调是由队列管理器自身使用单阶段提交进程提供的。 
全局工作单元上属于其它资源管理器的资源,例如符合 XA 的数据库,也同时被更新。必须使用两阶段提交过程,并且工作单元可由队列管理器自身协调,或由其它符合 XA 的事务管理器(例如 IBM TXSeries 或 BEA Tuxedo)。 
总之,队列管理器资源可作为本地或全局工作单元的一部分进行更新: 
本地工作单元 
当要更新的资源仅为 WebSphere MQ 队列管理器的那些资源时,使用本地工作单元。使用 MQCMIT 动词提交更新,或使用 MQBACK 复原。 
全局工作单元 
当您还需要将 XA 相应的数据库管理器的更新包含到使用全局工作单元。此处对队列管理器的协调可以是内部或外部的。 
队列管理器协调 
全局工作单元可以使用 MQBEGIN 动词启动,然后使用 MQCMIT 提交或使用 MQBACK 复原。两阶段提交进程是在 XA 相应的资源管理器(例如,DB2(R)、Oracle 和 Sybase)在首次要求准备提交时使用的。仅当所有准备都成功时,然后要求将它们提交。如果任何资源管理器发出其无法准备提交的信号,则要求将它们复原。 
外部的协调 
此处,协调由 XA 相应的事务管理器(例如,IBM CICS、Transarc Encina(R)、或 BEA Tuxedo)执行。工作单元是在事务管理器的控制下提交的。MQBEGIN、MQCMIT 和 MQBACK 动词都是不可用的。 

4.6 WebSphere MQ 死信队列处理程序
死信队列(DLQ),有时指未送达消息队列,是一个保存不能发送到它们目标队列的消息的队列。网络中的每个队列管理器应该有一个关联的 DLQ。 
消息可用队列管理器、消息通道代理程序(MCA)和应用程序放在 DLQ 上。DLQ 上的所有消息的前缀必须是用死信头结构 MQDLH 的结构。 
队列管理器或消息通道代理程序放在 DLQ 上的消息总是有 MQDLH;将消息放在 DLQ 上的应用程序必须提供 MQDLH。MQDLH 结构的原因字段包含标识为什么消息在 DLQ 上的一个原因码。 
所有 WebSphere MQ 环境需要一个在 DLQ 上有规律地处理消息的例程。WebSphere MQ 提供一个缺省例程死信队列处理程序(DLQ 处理程序),您可使用 runmqdlq 命令来调用它。 
用用户写入规则表方式将 DLQ 上的处理消息的说明提供给 DLQ 处理程序。即,DLQ 处理程序匹配和规则表中条目相对的 DLQ 上的消息;DLQ 消息匹配规则表中的一个条目时,DLQ 处理程序执行和条目关联的操作。 


4.7本章小结
本章主要介绍了WebSphere MQ的管理命令,共有三种命令,第一种是控制命令,主要是用在维护队列管理器本身的管理命令;第二种是MQSC命令,是用来管理队列管理器对象和队列管理器本身;第三种是PCF命令,它具有和MQSC命令相同的命令集,它主要用于在应用程序实现对队列管理器的维护。还介绍了WebSphere MQ配置信息和队列管理配置信息的存放位置,并举例介绍了unix和Window平台的配置文件。对WebSphere MQ的安全性、事务性和死信队列处理程序作了简单的介绍。

4.8本章练习
1.	WebSphere MQ关心下列那个安全服务:
(1)	认证(authentication)
(2)	授权(authorization)
(3)	访问控制(access control)
答案:(3)

2.	WebSphere MQ管理员需要为WebSphere MQ对象设置所有的安全性。
(1)对               (2)错
答案:(2)

3.	在WebSphere MQ中可以被保护的是:
(1)	队列
(2)	通道
(3)	定义
答案:(1)(2)

4.在一个工作单元中,changes是atomic。
(1)对           (2)错
答案:(1)

5.在同步点控制的MQPUT意味着:
(1)	直到提交之后,消息才被放到队列中。
(2)	消息被放到队列,“getting”程序需要检查同步标记。
(3)	消息被放到队列,但直到提交后“getting”程序才能处理这些消息。
答案:(3)
6.WebSphere MQ 客户端可以使用全局工作单元处理。
(1)对                   (2)错
答案:(2)
7.下列那些选项可以保证WebSphere MQ for Windows NT的应用数据的提交和回滚?
(1)	WebSphere Application Server
(2)	MQCMIT和MQBACK调用
(3)	Windows NT平台支持的XA-compliant Syncpoint coordinator
(4)	Microsoft Transaction Server
(5)	以上都是
答案:(5)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值