我们正试图将我们企业中的DLQ全面整合到一个Q中(如果您愿意...)。我们在各种平台上混合使用QM - 大型机,各种Unix风格 - Linux,AIX,Solaris等,Windows,AS/400 .... 想法是在QM上配置DLQ(将DEADQ属性设置为质量管理)与作为群集Q的ENTERPRISE_DLQ的QM进行比较。企业中的所有QM都是群集的成员。但是,当我们测试它时,这种方法似乎不起作用。 我已经通过设置一个具有4个QM的简单集群来测试这个。在质量管理中的一个,定义的QREMOTE到一个不存在的QM和不存在的Q,但有效的XMITQ和配置QMS之间的requsite SDR CHL如下:队列管理器*上的DLQ是否必须是QM上的本地队列?
QM_FR - Full_Repos QM1,QM2,QM3 - 群集
QM_FR承载ENTERPRISE_DLQ其通告给群集
在QM3设置的成员以下: QM3.QM1 - SDR到QM1,QL(QM1)随着使用XMITQ,QR(qr.not_exist )rqmname(not_exist)rname(not_exist)xmitq(qm1),设置QM1触发启动QM3.QM1,当msg到达QM1时
在QM1: QM3.QM1 - RCVR CHL,QL(local_dlq),QL(qa.enterise_dlq),QR(qr.enterprise.dlq)
测试1: 对QM1设置deadq到ENTERPRISE_DLQ,写msg到QM3上的QR.NOT_EXIST 结果:Msg停留在QM1,QM3.QM1正在重试,QM1错误日志抱怨无法MQOPEN Q - ENTERPRISE_DLQ!
QL(QM1)CURDEPTH(1)
测试2: 对QM1设置deadq到qr.enterprise.dlq,写了味精在QM3 QR.NOT_EXIST 结果:消息原地踏步上QM1,QM3 QM1正在重试,QM1错误日志抱怨无法MQOPEN Q - qr.enterprise.dlq(全部大写)!!
QL(QM1)CURDEPTH(2)
测试3: 上QM1设置deadq到qa.enterise_dlq,写了味精在QM3 QR.NOT_EXIST 结果:消息原地踏步上QM1,QM3.QM1正在重试,QM1错误日志抱怨不能MQOPEN Q - qa.enterise_dlq(全部大写)!
QL(QM1)CURDEPTH(3)
测试4: 上QM1设置deadq到local_dlq,写了味精在QM3 QR.NOT_EXIST 结果:消息原地踏步上QM1,QM3.QM1是RUNNING ,QM3上的所有消息ql(QM1)将其转换为QM3上的local_dlq。
QL(QM1)CURDEPTH(0)
现在的问题是:看起来在QM 像DLQ必须是本地队列。这是一个正确的结论吗?如果没有,我如何才能让所有DLQ msg都转到上面的单个Q-Enterprise_DLQ?
一个明显的解决方案是在QM3上的local_dlq上定义触发器(并在其他QM上执行相同的操作),它将读取消息并将其写入群集Q - ENTERPRISE_DLQ。但是这涉及到额外的移动部件 - 触发,触发每个QM上的监视器。能够将Q/QRemote/QAlias配置为QM上的DLQ是最理想的。思考/想法?
感谢 -Ravi
感谢罗布 - 为您的及时回应。 – 2012-03-15 19:53:44