因是与外单位合作开发,现因网络和硬件暂未到位。为了项目调试方便,设想在单一的机器上创建两个queuemanager,其中一个设为对方的qmgr另一个为我方的qmgr;程序也一个应用为我方程序
因是与外单位合作开发,现因网络和硬件暂未到位。为了项目调试方便,设想在单一的机器上创建两个queue manager,其中一个设为对方的
qmgr另一个为我方的qmgr;程序也一个应用为我方程序,另一个为模拟对方的程序 。到正式上线时只要修改我方qmgr的qremote相关地址即可
,程序不用修改。
环境:VMWARE workstation +redhat linux enterprise+ websphere MQ 6.0
请问这样是否可以。为何总是仅能启动一个listener和channel?另一个通道在启时就exit abnormally
我也配置mq的文件贴出,烦请大家看看有何问题,谢谢!
我方:
* 1.1定义接收队列
********************************************************************************
DEFINE QLOCAL ('BQL_SUBMIT_XXXX') +
REPLACE
********************************************************************************
* 1.2.定义接收通道
********************************************************************************
DEFINE CHANNEL('C2BCHL_SUBMIT_XXXX') +
CHLTYPE(RCVR) +
TRPTYPE(TCP) +
REPLACE
********************************************************************************
* 2.1.定义传输队列
********************************************************************************
DEFINE QLOCAL('BTQU_SUBMIT_XXXX') +
USAGE(XMITQ) +
REPLACE
********************************************************************************
* 2.2.定义远程队列
********************************************************************************
DEFINE QREMOTE('BRQU_SUBMIT_XXXX') +
RNAME('CQL_SUBMIT_XXXX') +
RQMNAME('CQM_SUBMIT') +
XMITQ('BTQU_SUBMIT_XXXX') +
REPLACE
********************************************************************************
* 2.3.定义发送通道
********************************************************************************
DEFINE CHANNEL('B2CCHL_SUBMIT_XXXX') +
CHLTYPE(SDR) +
TRPTYPE(TCP) +
DISCINT(0) +
XMITQ(BTQU_SUBMIT_XXXX) +
*CONNAME(84.0.98.248)
CONNAME(127.0.0.1) +
REPLACE
********************************************************************************
* 3.1.定义死信队列
********************************************************************************
DEFINE QLOCAL('BQM_SUBMIT_DEATH') +
LIKE(SYSTEM.DEAD.LETTER.QUEUE) +
REPLACE
********************************************************************************
* 3.2.更改QM的缺省死信队列 和 MAXHANDS=5
********************************************************************************
ALTER QMGR DEADQ('BQM_SUBMIT_DEATH') MAXHANDS(5)
********************************************************************************
* 定义侦听器
DEFINE LISTENER(BLIS_FUND_SUBMIT) TRPTYPE (TCP) CONTROL (QMGR) +
PORT(1515) +
REPLACE
end
模拟对方
* 1.1定义接收队列
********************************************************************************
DEFINE QLOCAL ('CQL_SUBMIT_XXXX') +
REPLACE
********************************************************************************
* 1.2.定义接收通道
********************************************************************************
DEFINE CHANNEL('B2CCHL_SUBMIT_XXXX') +
CHLTYPE(RCVR) +
TRPTYPE(TCP) +
REPLACE
********************************************************************************
* 2.1.定义传输队列
********************************************************************************
DEFINE QLOCAL('CTQU_SUBMIT_XXXX') +
USAGE(XMITQ) +
REPLACE
********************************************************************************
* 2.2.定义远程队列
********************************************************************************
DEFINE QREMOTE('CRQU_SUBMIT_XXXX') +
RNAME('BQL_SUBMIT_XXXX') +
RQMNAME('BQM_FUND_SUBMIT') +
XMITQ('CTQU_SUBMIT_XXXX') +
REPLACE
********************************************************************************
* 2.3.定义发送通道
********************************************************************************
DEFINE CHANNEL('C2BCHL_SUBMIT_XXXX') +
CHLTYPE(SDR) +
TRPTYPE(TCP) +
DISCINT(0) +
XMITQ(CTQU_SUBMIT_XXXX) +
*CONNAME(84.0.98.248) +
CONNAME(127.0.0.1(1515)) +
REPLACE
********************************************************************************
* 3.1.定义死信队列
********************************************************************************
DEFINE QLOCAL('CQM_SUBMIT_DEATH') +
LIKE(SYSTEM.DEAD.LETTER.QUEUE) +
REPLACE
********************************************************************************
* 3.2.更改QM的缺省死信队列 和 MAXHANDS=5
********************************************************************************
ALTER QMGR DEADQ('CQM_SUBMIT_DEATH') MAXHANDS(5)
********************************************************************************
* 定义侦听器
DEFINE LISTENER(CLIS_FUND_SUBMIT) TRPTYPE (TCP) CONTROL (QMGR) +
REPLACE
end
用shell跑如下步骤:
endmqlsr -m BQM_FUND_SUBMIT
endmqm -p BQM_FUND_SUBMIT
dltmqm BQM_FUND_SUBMIT
crtmqm BQM_FUND_SUBMIT
strmqm BQM_FUND_SUBMIT
runmqsc BQM_FUND_SUBMIT < defineMQbank > BQM.log
runmqlsr -m BQM_FUND_SUBMIT -t tcp &
sleep 10
#########################################################
endmqlsr -m CQM_SUBMIT
endmqm -p CQM_SUBMIT
dltmqm CQM_SUBMIT
crtmqm CQM_SUBMIT
strmqm CQM_SUBMIT
runmqsc CQM_SUBMIT < defineMQgjj > CQM.log
runmqlsr -m CQM_SUBMIT -t tcp &
sleep 10
runmqchl -m CQM_SUBMIT -c C2BCHL_SUBMIT_XXXX &
runmqchl -m BQM_FUND_SUBMIT -c B2CCHL_SUBMIT_XXXX &
5 个解决方案
可以的,环境配置简单,不过快2年不用 MQ, 这命令看不明白参数了。
TCP Listener 的启动跟 Channel 没有关系的,你先解决 TCP Listener 的问题先。
或许因为 TCP Listener 导致另外一个方向的 Channel 启动不了呢。
看你的连接名和通道名配对好像都一致啊。
我刚才用你的 MQSC 脚本在我的 MQ v7 上试了下,我发现定义 Sender 通道时不用 127.0.0.1(1515), 这个连接名我也记得以前是说对 TCP / IP 来说是 IP(Port) 格式,为什么用 MQSC 时报错,我用 127.0.0.1 创建成功了然后再到 MQ Explorer 中改成 127.0.0.1(1515) 后测试了一下成功连接了。我测试了一下,消息到达了另外一个 QM 上了。难道这是 MQ v7 解析 MQSC 脚本时的 bug?
我测试成功的。配置没错,有可能是 listener 启动失败造成的。另外你那边有我说的这个 sender channel 创建失败的消息吗?
我只用过 Windows 上的 MQ 它的异常信息在 Windows 事件查看器里可以看到 Linux 不知道怎么看 MQ 服务器事件。
感谢楼上的回答。我们现在通了,之所以不通的原因是有两台机(都是VMWARE的虚机设为A、B)原先是配相互间通讯的,后来我的一台改为本机内互通,但是B机上的MQ仍然开着,所以每次B机起通道的时候他就自动联过来。
另外在linux下runmqlsr若不指定端口则会以1414启动listener,即使在define的时候指定端口貌似也没用。
感谢楼上的回答。我们现在通了,之所以不通的原因是有两台机(都是VMWARE的虚机设为A、B)原先是配相互间通讯的,后来我的一台改为本机内互通,但是B机上的MQ仍然开着,所以每次B机起通道的时候他就自动联过来。所以B机再起第二个channel的时候就连不上了显示ended abnormally。
另外在linux下runmqlsr若不指定端口则会以1414启动listener,即使在define listener的时候已经指定端口貌似也没用。
以上两次发帖,逻辑并不正确,修改并回复如下。
------------------------------------------------
感谢楼上的回答。我们现在通了,之所以不通的原因是有两台机(都是VMWARE的虚机设为A、B)原先是配相互间通讯的,后来我的一台改为本机A内互通,但是B机上的MQ仍然开着,所以每次A机起通道的时候他就自动联过来。所以A机再起第二个channel的时候就连不上了,显示某通道 ended abnormally。
另外在linux下runmqlsr若不指定端口则会以1414启动listener,即使在define listener的时候已经指定端口貌似也没用。