最近公司的项目要求使用MQ连接外部环境进行通讯,而所有连接外部环境的机器只能通过一台机器A这里他的ip为128.192.179.7。而我们的应用部署在另外一台机器B128.96.96.45(此机器为内网Ip).所有必需在机器A上面进行信息的中转。因此使用MQ进行信息的中转,此去配置双向通道,而队列又分为实时和非实时。具体配置如下:
      机器A上面的配置脚本为为:
 #!/bin/sh 
endmqm QMEMBFE
crtmqm QMEMBFE
strmqm QMEMBFE
runmqsc QMEMBFE <<!
def ql(DEADQ) defpsist(yes) maxdepth(20000) replace
def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_1) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_2) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_3) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_4) defpsist(yes) maxdepth(20000) replace
alter ql(1051000001_1) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_2) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_3) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_4) BOTHRESH(3) BOQNAME(ERRMSG)
alter qmgr deadq(deadq)
alter qmgr ccsid(819)
def qr(1051000001_5) rname(1051000001_1) rqmname(QMEMBFE1) xmitq(QM1051000002) defpsist(yes) replace
def qr(1051000001_6) rname(1051000001_2) rqmname(QMEMBFE1) xmitq(QM1051000002) defpsist(yes) replace
def ql(QM1051000002) usage(XMITQ) defpsist(YES) maxdepth(500000) trigger trigtype(FIRST) trigdata(1051000001.QMEMBFE) initq(SYSTEM.CHANNEL.INITQ) replace
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
def chl(QMEMBFE.1051000001) chltype(rcvr) trptype(tcp)
def listener(QM1051000002) TRPTYPE(TCP) PORT(1415) CONTROL(MANUAL) BACKLOG(0)
START LISTENER(QM1051000002)
!
 
 
    机器B上创建脚本为:
#!/bin/sh
endmqm QMEMBFE1
crtmqm QMEMBFE1
strmqm QMEMBFE1
runmqsc QMEMBFE1 <<!
def ql(DEADQ) defpsist(yes) maxdepth(20000) replace
def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_1) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_2) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_3) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_4) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_5) defpsist(yes) maxdepth(20000) replace
def ql(1051000001_6) defpsist(yes) maxdepth(20000) replace
alter ql(1051000001_1) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_2) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_3) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_4) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_5) BOTHRESH(3) BOQNAME(ERRMSG)
alter ql(1051000001_6) BOTHRESH(3) BOQNAME(ERRMSG)
alter qmgr deadq(deadq)
alter qmgr ccsid(819)
def qr(1051000001_7) rname(1051000001_3) rqmname(QMEMBFE) xmitq(QM1051000000) defpsist(yes) replace
def qr(1051000001_8) rname(1051000001_4) rqmname(QMEMBFE) xmitq(QM1051000000) defpsist(yes) replace
def ql(QM1051000000) usage(XMITQ) defpsist(YES) maxdepth(500000) trigger trigtype(FIRST) trigdata(QMEMBFE.1051000001) initq(SYSTEM.CHANNEL.INITQ) replace
def chl(QMEMBFE.1051000001) chltype(SDR) discint(1800) conname('128.192.179.7(1415)') xmitq(QM1051000000) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
def chl(1051000001.QMEMBFE) chltype(rcvr) trptype(tcp)
 
def listener(QM1051000000) TRPTYPE(TCP) PORT(1414) CONTROL(MANUAL) BACKLOG(0)
START LISTENER(QM1051000000)
!
  至此在两个机器的mq安装用户下分别执行两个脚本,配置就完成。接下来就是验证此配置。
  在这里我们还需要编写一个程序让MQ队列本地的信息放到远程队列达到信息从本地队列直接传输到远程的本地队列。所以此程序应该为一个守护程序,监听以上所建立的四个队列。由于时间的原因这里我就不贴出具体的代码。如果有需要的,请发表评论我以后补充!