WebShpere MQ入门教程(20):MQ通道的维护
6.3.1通道的状态
下图显示了所有可能的通道状态层次结构,在 WebSphere MQ for AIX, iSeries, HP-UX, Linux, Solaris, 和Windows systems, 和 WebSphere MQ V5.1 for OS/2 Warp平台,这些状态对服务器连接通道也适用。
图,通道状态
如果通道的状态分为inactive和current两大类;“current”可以是Stopped,Starting,Retrying和Active的情况。通道Acitve的情况又可分为Initializing,Binding,Requesting,Running,Paused或Stopping的状态。
下图显示通道状态之间的变化关系。
注意:
1. 当通道处于INITIALIZING, BINDING, REQUESTING, RUNNING, PAUSED, or或STOPPING状态时,这将消耗系统资源,并且通道的进程或线程正在运行;因为通道是Active状态。
2. 当通道是STOPPED状态时, 会话可能是active,因为下一个状态时未知的。
6.3.2通道维护命令
下面将详细地介绍通道有关的维护命令。
创建通道
为创建一个新通道,您需要创建两个通道定义,在通信的双方各定义一个。这两个通道的名字必须时相同的,而且两端的通道类型必须匹配,例如:发送和接收。可以使用MQSC命令“DEFINE CHANNEL”来创建通道,在命令中需要指定通道名,通道类型,连接名,通道描述(可选),传输队列名(可选)和传输协议,等还有许多可选的属性可以设置。
注意:
建议在WebSphere MQ的网络中所有的通道名唯一,并且通道名中最好包含了源队列管理器名和目标队列管理器名。
创建通道的例子
DEFINE CHANNEL(QM1.TO.QM2) CHLTYPE(SDR) +
DESCR(’Sender channel to QM2’) +
CONNAME(QM2) TRPTYPE(TCP) XMITQ(QM2) CONVERT(YES)
I
修改通道
可以使用 MQSC命令“ALTER CHANNEL”来修改现有通道定义,但是通道名和通道类型不能修改。
删除通道
可以使用 MQSC命令“DELETE CHANNEL”来删除现有通道定义。
查看通道定义
可以使用 MQSC命令“DISPLAY CHANNEL”来查看现有通道定义。可以说明通道名,通道类型(可选),和其它属性,或查看所有的属性。
查看通道定义的例子
DISPLAY CHANNEL(QM1.TO.QM2) TRPTYPE,CONVERT
DISPLAY CHANNEL(QM1.TO.*) TRPTYPE,CONVERT
DISPLAY CHANNEL(*) TRPTYPE,CONVERT
DISPLAY CHANNEL(QM1.TO.QMR34) ALL
查看通道状态
可以使用 MQSC命令“DISPLAY CHSTATUS”来查看现有通道状态。
显示的通道信息包括:
通道名
通信连接名
通道的In-doubt状态
上一个消息序号
传输队列名
in-doubt 标识
上一个提交消息序号
逻辑工作单元标识
进程ID
线程 ID (仅OS/2 和 Windows 支持)
查看通道状态的例子
DISPLAY CHSTATUS(*) CURRENT
DISPLAY CHSTATUS(QM1.TO.*) SAVED
Ping 通道
使用MQSC 命令“PING CHANNEL”用固定的数据消息来测试和远端的连接.ping通道并没有使用传输队列和目标队列。它只是使用了通道定义、通讯链路和网络设置。只用通道当前状态不是active的情况下才使用它。这个命令只能在发送通道和服务器通道方使用。
命令返回的结果是“Ping complete”或错误消息。
启动通道
使用MQSC命令“START CHANNEL”启动发送通道、服务器通道和请求器通道。如果通道是采用触发方式启动,那么不用手工执行启动命令。当接收通道处在disabled的状态时,也可以使用“START CHANNEL”命令启动它。在WebSphere MQ for AIX, iSeries, HP-UX, Linux, Solaris, 和Windows systems, 和 WebSphere MQ V5.1 for Compaq Tru64 UNIX, 和 OS/2 Warp,如果服务器连接通道处在disabled状态,也可以使用“START CHANNEL”命令启动它。启动处在disabled状态的接收通道或服务器连接通道,即是复位通道和允许通道被远程启动。当通道被启动时,发送MCA读通道定义文件并打开传输队列,并远程启动相应的接收或服务器通道。
通道启动成功的条件:
1,本地和远端的通道定义必须存在。
2,传输队列必须存在,并且没有其它通道使用它。
3,本地和远程的MCA必须存在。
4,通讯链路必须可用。
5,本地和远程队列管理器必须是处在运行状态。
6,消息通道一定不在运行。
停止通道
使用MQSC命令“STOP CHANNEL”停止通道。停止通道的命令只能对除客户连接之外的通道进行操作。
停止通道的方式:
静态停止(Stop quiesce)
STOP CHANNEL(QM1.TO.QM2) MODE(QUIESCE)
这种方式将顺序地停止通道,必须完成当前的消息处理并确保事务的一致性。
注意:
如果通道是空闲的,将不终止接收通道。
强制停止(Stop force)
STOP CHANNEL(QM1.TO.QM2) MODE(FORCE)
这种方式立即停止通道,但不终止通道的线程或进程。通道并没有完成当前的消息处理,因此可能使通道处在可疑的状态。通常,推荐系统管理员使用静态停止通道。
终止停止(Stop terminate)
STOP CHANNEL(QM1.TO.QM2) MODE(TERMINATE)
这种方式立即停止通道,并终止通道的线程或进程。
复位通道
可以使用MQSC命令“RESET CHANNEL”改变消息序号。这个命令可以适用于任何消息通道,但不能用在MQI通道(客户连接或服务器连接)。通道被启动后,将使用新的消息序号。如果是对发送通道或服务器通道进行复位,当下次通道重新启动时将通知通道的另一方。
Resolve通道
从发送通道或服务器通道使用MQSC命令“RESOLVE CHANNEL”来处理可疑的消息。“RESOLVE CHANNEL”命令可以接受 BACKOUT 或 COMMIT参数,Backout将把可疑消息恢复到传输队列,而Commit将丢弃可疑消息。
6.3.3设置MaxChannels和MaxActiveChannels属性
MaxChannels和MaxActiveChannels分别代表队列管理器允许配置的通道的最大个数和允许同时运行的通道的个数,MaxChannels的缺省值是100,MaxActiveChannels的缺省值与MaxChannels相同。如果您的并发通道连接个数超过了100,您需要修改这两个参数。这对于大并发的Client/Server间通讯尤为重要。
例如,在unix平台,修改qm.ini文件如下所示:
CHANNELS:
MaxChannels = 200 ; Maximum number of Channels allowed.
MaxActiveChannels = 150 ; Maximum number of Channels allowed to be
; active at any time.
下图显示了所有可能的通道状态层次结构,在 WebSphere MQ for AIX, iSeries, HP-UX, Linux, Solaris, 和Windows systems, 和 WebSphere MQ V5.1 for OS/2 Warp平台,这些状态对服务器连接通道也适用。
图,通道状态
如果通道的状态分为inactive和current两大类;“current”可以是Stopped,Starting,Retrying和Active的情况。通道Acitve的情况又可分为Initializing,Binding,Requesting,Running,Paused或Stopping的状态。
下图显示通道状态之间的变化关系。
注意:
1. 当通道处于INITIALIZING, BINDING, REQUESTING, RUNNING, PAUSED, or或STOPPING状态时,这将消耗系统资源,并且通道的进程或线程正在运行;因为通道是Active状态。
2. 当通道是STOPPED状态时, 会话可能是active,因为下一个状态时未知的。
6.3.2通道维护命令
下面将详细地介绍通道有关的维护命令。
创建通道
为创建一个新通道,您需要创建两个通道定义,在通信的双方各定义一个。这两个通道的名字必须时相同的,而且两端的通道类型必须匹配,例如:发送和接收。可以使用MQSC命令“DEFINE CHANNEL”来创建通道,在命令中需要指定通道名,通道类型,连接名,通道描述(可选),传输队列名(可选)和传输协议,等还有许多可选的属性可以设置。
注意:
建议在WebSphere MQ的网络中所有的通道名唯一,并且通道名中最好包含了源队列管理器名和目标队列管理器名。
创建通道的例子
DEFINE CHANNEL(QM1.TO.QM2) CHLTYPE(SDR) +
DESCR(’Sender channel to QM2’) +
CONNAME(QM2) TRPTYPE(TCP) XMITQ(QM2) CONVERT(YES)
I
修改通道
可以使用 MQSC命令“ALTER CHANNEL”来修改现有通道定义,但是通道名和通道类型不能修改。
删除通道
可以使用 MQSC命令“DELETE CHANNEL”来删除现有通道定义。
查看通道定义
可以使用 MQSC命令“DISPLAY CHANNEL”来查看现有通道定义。可以说明通道名,通道类型(可选),和其它属性,或查看所有的属性。
查看通道定义的例子
DISPLAY CHANNEL(QM1.TO.QM2) TRPTYPE,CONVERT
DISPLAY CHANNEL(QM1.TO.*) TRPTYPE,CONVERT
DISPLAY CHANNEL(*) TRPTYPE,CONVERT
DISPLAY CHANNEL(QM1.TO.QMR34) ALL
查看通道状态
可以使用 MQSC命令“DISPLAY CHSTATUS”来查看现有通道状态。
显示的通道信息包括:
通道名
通信连接名
通道的In-doubt状态
上一个消息序号
传输队列名
in-doubt 标识
上一个提交消息序号
逻辑工作单元标识
进程ID
线程 ID (仅OS/2 和 Windows 支持)
查看通道状态的例子
DISPLAY CHSTATUS(*) CURRENT
DISPLAY CHSTATUS(QM1.TO.*) SAVED
Ping 通道
使用MQSC 命令“PING CHANNEL”用固定的数据消息来测试和远端的连接.ping通道并没有使用传输队列和目标队列。它只是使用了通道定义、通讯链路和网络设置。只用通道当前状态不是active的情况下才使用它。这个命令只能在发送通道和服务器通道方使用。
命令返回的结果是“Ping complete”或错误消息。
启动通道
使用MQSC命令“START CHANNEL”启动发送通道、服务器通道和请求器通道。如果通道是采用触发方式启动,那么不用手工执行启动命令。当接收通道处在disabled的状态时,也可以使用“START CHANNEL”命令启动它。在WebSphere MQ for AIX, iSeries, HP-UX, Linux, Solaris, 和Windows systems, 和 WebSphere MQ V5.1 for Compaq Tru64 UNIX, 和 OS/2 Warp,如果服务器连接通道处在disabled状态,也可以使用“START CHANNEL”命令启动它。启动处在disabled状态的接收通道或服务器连接通道,即是复位通道和允许通道被远程启动。当通道被启动时,发送MCA读通道定义文件并打开传输队列,并远程启动相应的接收或服务器通道。
通道启动成功的条件:
1,本地和远端的通道定义必须存在。
2,传输队列必须存在,并且没有其它通道使用它。
3,本地和远程的MCA必须存在。
4,通讯链路必须可用。
5,本地和远程队列管理器必须是处在运行状态。
6,消息通道一定不在运行。
停止通道
使用MQSC命令“STOP CHANNEL”停止通道。停止通道的命令只能对除客户连接之外的通道进行操作。
停止通道的方式:
静态停止(Stop quiesce)
STOP CHANNEL(QM1.TO.QM2) MODE(QUIESCE)
这种方式将顺序地停止通道,必须完成当前的消息处理并确保事务的一致性。
注意:
如果通道是空闲的,将不终止接收通道。
强制停止(Stop force)
STOP CHANNEL(QM1.TO.QM2) MODE(FORCE)
这种方式立即停止通道,但不终止通道的线程或进程。通道并没有完成当前的消息处理,因此可能使通道处在可疑的状态。通常,推荐系统管理员使用静态停止通道。
终止停止(Stop terminate)
STOP CHANNEL(QM1.TO.QM2) MODE(TERMINATE)
这种方式立即停止通道,并终止通道的线程或进程。
复位通道
可以使用MQSC命令“RESET CHANNEL”改变消息序号。这个命令可以适用于任何消息通道,但不能用在MQI通道(客户连接或服务器连接)。通道被启动后,将使用新的消息序号。如果是对发送通道或服务器通道进行复位,当下次通道重新启动时将通知通道的另一方。
Resolve通道
从发送通道或服务器通道使用MQSC命令“RESOLVE CHANNEL”来处理可疑的消息。“RESOLVE CHANNEL”命令可以接受 BACKOUT 或 COMMIT参数,Backout将把可疑消息恢复到传输队列,而Commit将丢弃可疑消息。
6.3.3设置MaxChannels和MaxActiveChannels属性
MaxChannels和MaxActiveChannels分别代表队列管理器允许配置的通道的最大个数和允许同时运行的通道的个数,MaxChannels的缺省值是100,MaxActiveChannels的缺省值与MaxChannels相同。如果您的并发通道连接个数超过了100,您需要修改这两个参数。这对于大并发的Client/Server间通讯尤为重要。
例如,在unix平台,修改qm.ini文件如下所示:
CHANNELS:
MaxChannels = 200 ; Maximum number of Channels allowed.
MaxActiveChannels = 150 ; Maximum number of Channels allowed to be
; active at any time.