MQ监听器管理
在本地队列管理器可以将消息发送到远程队列管理器之前,我们需要为远程队列管理器启动一个监听器。默认的 MQ 监听器端口 号是 1414 ,如果我们使用这个端口,那么我们在发出启动监听器 命令时就不必指定端口号 。本节介绍我们如何管理 MQ 侦听器。我们将研究定义、启动和停止 Listener 的不同方式。
定义/启动 MQ 侦听器:
有两种定义和启动 MQ 监听器的方法:
第一种方法使用运行 Listener RUNMQLSR 命令。该命令的参数是连接类型 ( -t )、队列管理器名称 ( -m ) 和要启动的端口号 ( -p )。因此,如果我们想在端口 1450 上为队列管理器 QMA启动 TCP 侦听器,我们将发出:
$ runmqlsr -t tcp -m QMA -p 1450
可以将此命令放入批处理文件 ( SYSA_QMA_START_RUNMQLSR.BAT ) 中,并且在 UNIX 中可以使用 nohup 和 & 选项运行:
$ nohup runmqlsr -t tcp -m QMA -p 1450 &
为队列管理器 QMB 在端口 1451 上启动 TCP 侦听器的命令是:
$ nohup runmqlsr -t tcp -m QMB -p 1451 &
可以将此命令放入 SYSB_QMB_START_RUNMQLSR.BAT 批处理文件中。
第二种方法 使用以下 RUNMQSC命令文件从MQSC环境创建监听器:
DEFINE LISTENER (QMA1450) +
TRPTYPE (TCP) +
PORT (1450) +
CONTROL(QMGR)
在此文本文件中,我们为监听器指定了一个名称 ( QMA1450 ),并为该监听器分配了一个端口号。显示的最后一个参数是 CONTROL,它决定了监听器的启动方式,可能的选项是 MANUAL、 QMGR和 STARTONLY,这意味着:
· MANUAL:(默认)Listener 不会自动启动或自动停止。它是通过使用 START LISTENER 和 STOP LISTENER 命令来控制的。
· QMGR:被定义的监听器将在队列管理器启动和停止的同时启动和停止。
· STARTONLY:侦听器将在队列管理器启动的同时启动,但不会在队列管理器停止时请求停止。
如果要手动控制监听器,则可以使用从 MQSC 环境发出的以下命令启动它:
:start listener(QMA1450)
所以回顾一下,如果我们使用 MQ 命令 ( RUNMQLSR ) 启动一个监听器,那么我们不能给它一个名字,我们必须在每次启动队列管理器时手动启动它。如果我们使用来自MQSC 环境的文本文件,那么我们可以命名监听器并让它在队列管理器启动时启动。
要启动监听器,请分别在QMA 和 QMB上发出以下命令 :
start runmqlsr -t tcp -m QMA -p 1450
start runmqlsr -t tcp -m QMB -p 1451
这两个命令都可以分别包含在批处理文件 SYSA_QMA_START_RUNMQLSR.BAT 和SYSB_QMB_START_RUNMQLSR.BAT 中。
根据您站点的标准,您可以根据第二种方法创建监听器。
显示 MQ 侦听器:
我们所说的“显示”MQ Listener 的意思是首先检查 Listener 是否实际运行,其次显示 Listener 的属性。让我们首先看看检查 Listener 是否正在运行。
如果监听器是使用 RUNMQLSR MQ 命令启动的:
$ runmqlsr -t tcp -m QMA -p 1450 &
然后这将创建一个监听器,其名称的格式为 SYSTEM.LISTENER.TCP.<n>。我们可以通过发出 DISPLAY LSSTATUS MQSC 命令检查此侦听器是否正在运行:
: display lsstatus(*)
你会看到:
AMQ8631: Display listener status details.
LISTENER(SYSTEM.LISTENER.TCP.3) STATUS(RUNNING)
PID(12912)
我们可以看到状态是 RUNNING。PID 对应于 UNIX ps –ef命令的 输出:
$ ps -ef | grep -i "runmqlsr"
mqm 12912 1 0 14:14 pts/1 00:00:00 runmqlsr -t tcp -m QMA -p 1450
db2instp 15937 10695 0 14:43 pts/1 00:00:00 grep -i runmqlsr
如果监听器是使用文件中的 MQSC 命令创建的(如前所示),那么我们可以为监听器命名 ( QMA1450 )。现在我们可以使用DISPLAY LSSTATUS MQSC 命令检查监听器是否正在运行:
: display lsstatus(*)
你会看到:
AMQ8631: Display listener status details.
LISTENER(QMA1450) STATUS(RUNNING)
PID(2360)
我们当然可以指定我们的监听器名称来代替星号:
: display lsstatus(QMA1450)
AMQ8631: Display listener status details.
LISTENER(QMA1450) STATUS(RUNNING)
PID(2360) STARTDA(2009-02-19)
STARTTI(16.41.41) DESCR( )
TRPTYPE(TCP) CONTROL(QMGR)
IPADDR(*) PORT(1450)
BACKLOG(100)
如果侦听器是使用 MQSC 命令文件创建的,则可以使用 DISPLAY LISTENER MQSC 命令并指定名称来显示其属性:
: display listener(QMA1450)
AMQ8630: Display listener information details.
LISTENER(QMA1450) CONTROL(QMGR)
TRPTYPE(TCP) PORT(1450)
IPADDR( ) BACKLOG(100)
DESCR( ) ALTDATE(2009-02-19)
ALTTIME(16.41.41)
如果监听器是使用 RUNMQLSR 命令启动的,那么要显示它的属性,我们需要将参数 ALL 附加到 DISPLAY LSSTATUS 命令:
: display lsstatus(*) all
AMQ8631: Display listener status details.
LISTENER(SYSTEM.LISTENER.TCP.3) STATUS(RUNNING)
PID(8256) STARTDA(2010-01-07)
STARTTI(16.54.54) DESCR( )
TRPTYPE(TCP) CONTROL(MANUAL)
IPADDR(*) PORT(1450)
BACKLOG(100)
停止 MQ 侦听器
有两种方法可以停止 Listener。第一种方法使用 ENDMQLSR MQ 命令,第二种方法使用 STOP LISTENER MQSC 命令。
在以下示例中,我们希望 使用 ENDMQLSR MQ 命令停止 Queue Manager QMA的侦听器:
$ endmqlsr –w -m QMA
在以下示例中,我们使用 STOP LISTENER MQSC 命令来停止监听器:
: stop listener(QMA1450)