Nous essayons de consolider les DLQ de notre entreprise en un seul Q (un Enterprise_DLQ si vous voulez...). Nous avons un mélange de QM sur diverses plates-formes - Mainframe, diverses saveurs Unix - Linux, AIX, Solaris etc., Windows, AS/400..... L'idée était de configurer le DLQ sur le QM (définir l'attribut DEADQ sur le QM) à celui de ENTERPRISE_DLQ qui est un Cluster Q. Tous les QM de l'Entreprise sont membres du Cluster. Cependant, cette approche ne semble pas fonctionner lorsque nous l'avons testée. J'ai testé cela en mettant en place un Cluster simple avec 4 QMs. Sur l'un des QM, j'ai défini un QRemote vers un QM inexistant et un Q inexistant, mais un xmitq valide et configuré le requsite SDR chl entre les QM comme suit :
QM_FR - Full_Repos QM1, QM2, QM3 - membres du cluster
QM_FR héberge ENTERPRISE_DLQ qui est annoncé au Cluster.
Sur QM3, configurez les éléments suivants : QM3.QM1 - sdr vers QM1, ql(QM1) avec utilisation xmitq, qr(qr.not_exist) rqmname(not_exist) rname(not_exist) xmitq(qm1), configurer QM1 pour déclencher le démarrage de QM3.QM1 quand un message arrive sur QM1.
Sur QM1 : QM3.QM1 - rcvr chl, ql(local_dlq), ql(qa.enterise_dlq), qr(qr.enterprise.dlq)
Test 1 : Définir deadq sur QM1 à ENTERPRISE_DLQ, écrire un msg à QR.NOT_EXIST sur QM3. Résultat : Le msg reste sur QM1, QM3.QM1 est RETRYING, les logs d'erreur de QM1 se plaignent de ne pas pouvoir MQOPEN le Q - ENTERPRISE_DLQ ! !!
ql(qm1) curdepth(1)
Test 2 : Régler deadq sur QM1 à qr.enterprise.dlq, écrire un msg à QR.NOT_EXIST sur QM3 Résultat : Le msg reste sur QM1, QM3.QM1 est RETRYING, les logs d'erreur de QM1 se plaignent de ne pas pouvoir MQOPEN le Q - qr.enterprise.dlq (tout en majuscules) ! !!
ql(qm1) curdepth(2)
Test 3 : Définir deadq sur QM1 à qa.enterise_dlq, écrire un msg à QR.NOT_EXIST sur QM3 Résultat : Le msg reste sur QM1, QM3.QM1 est RETRYING, les journaux d'erreurs de QM1 se plaignent de ne pas pouvoir MQOPEN le Q - qa.enterise_dlq (tout en majuscules) ! !!
ql(qm1) curdepth(3)
Test 4 : Régler deadq sur QM1 à local_dlq, écrire un msg à QR.NOT_EXIST sur QM3 Résultat : Le message reste sur QM1, QM3.QM1 est RUNNING, tous les messages sur QM3 ql(QM1) arrivent à local_dlq sur QM3.
ql(qm1) curdepth(0)
Maintenant la question : On dirait que le DLQ sur un QM doit soit une file d'attente locale. Cette conclusion est-elle correcte ? Si ce n'est pas le cas, comment puis-je faire en sorte que tous les messages des DLQs aillent à un seul Q - Enterprise_DLQ ci-dessus ?
Une solution évidente est de définir un déclencheur sur local_dlq sur QM3 (et de faire de même sur les autres QMs) qui lira le message et l'écrira dans le Cluster Q - ENTERPRISE_DLQ. Mais cela implique des parties mobiles supplémentaires - déclencheur, moniteur de déclenchement sur chaque QM. Il est plus souhaitable de pouvoir configurer un Cluster Q/QRemote/QAlias pour être un DLQ sur le QM. Réflexions/idées ? ??
Merci -Ravi