1、在创建队列管理器之后,创建通道的时候机器A端的发送通道名称必须和机器B中接受通道的名称一致。并且机器A中连接机器B的端口必须为机器B监听的端口。如以下:
A机器: def chl(1051000001.QMEMBFE) chltype(SDR) discint(1800) conname('128.96.96.45(1414)') xmitq(QM1051000002) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
B机器:def chl(1051000001.QMEMBFE) chltype(rcvr) trptype(tcp)
def listener(QM1051000000) TRPTYPE(TCP) PORT(1414) CONTROL(MANUAL) BACKLOG(0)
START LISTENER(QM1051000000)
2、当本地与其他MQ队列管理器的通道无法正常启动的情况,检查日志发现是通道序号不一致,此时就需要先停止发送方通道,并在发送方和接收方进行通道计数的重置,重置后启动通道即可恢复通讯。 reset channel(ChannelName);
3、要注意出新异常情况学会看日志,并精确定位错误信息。最新的错误日志一般在/var/mqm/qmgrs/QMEMBFE1/errors/目录下的文件AMQERR01.LOG中。(其中QMEMBFE1为队列管理器的名称,按实际名称去查看)
4、在编写程序的时候两个队列管理的名称不能一样,这里我编写程序的目的是为了把本地队列的消息放到本地远程对列中。第一次编写的时候我把两台机器的队列管理器都建成同一个名称,后来测试的时候提示报错,两个队列管理器的名称不能相同,所以我又重新建立了队列管理器。
5、最后要注意通道连通后如果长时间没有收发消息,那么通道就会自动停止。但不要惊慌这个情况是正常的,当我们往队列放置消息后它会被传输队列出发启动。注意此处必须把传输队列设置为消息出发类型才行。例如:def ql(QM1051000000) usage(XMITQ) defpsist(YES) maxdepth(500000) trigger trigtype(FIRST) trigdata(QMEMBFE.1051000001) initq(SYSTEM.CHANNEL.INITQ) replace