Author |
Message
|
mattfarney |
Posted: Wed Jan 11, 2012 2:46 pm Post subject: Clusters and aliases discussion |
|
|
 Disciple
Joined: 17 Jan 2006 Posts: 167 Location: Ohio
|
I'm curious why the cluster resolution works the way it does.
In particular, resolving aliases to clustered objects.
Let's assume I have a cluster with External QM and 3 normal QMs all hosting a clustered local queue named MY.HOME. External has a QMAlias of OUTSIDE. External has a QAlias THEIR.HOME which has a targq of MY.HOME.
If an external system writes to External with a QR with RName MY.HOME and RQName External, the cluster traffic doesn't resolve. (I believe this gets 2085).
If an external system writes to External with a QR with RName of MY.HOME and RQName OUTSIDE, the cluster traffic resolves to an instance of MY.HOME.
If an external system writes to External with a QR with RName of THEIR.HOME and RQName External, the cluster traffic does not resolve. (I believe this gets 2082).
These just seem like odd choices to me. Personally, I think all three of these should resolve correctly. I would not be offended if the alias had an option to force cluster name lookup. Given that clusters are used to (at least partially) to hide implementation from the outside world, relying on application settings for cluster resolution seems needlessly risky.
-mf |
|
Back to top |
|
 |
bruce2359 |
Posted: Wed Jan 11, 2012 2:49 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
It would help a bunch if you posted the actual object definitions with all their (relevant) attributes and values. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
mattfarney |
Posted: Wed Jan 11, 2012 3:18 pm Post subject: |
|
|
 Disciple
Joined: 17 Jan 2006 Posts: 167 Location: Ohio
|
I think that's kinda of my point. Most of the values don't matter.
In particular, it doesn't matter what the DEFBIND attribute is.
In these cases, having it BIND_ON_OPEN vs NOTFIXED only affects scenario #2 (in which one instance of MY.HOME gets all of the traffic).
-mf |
|
Back to top |
|
 |
bruce2359 |
Posted: Wed Jan 11, 2012 3:26 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Name resolution isn't all that different for cluster objects.
Each time mq encounters a name, name resolution takes place - in this order:
First look at local (this qmgr) objects:
1) QLocal
2) QModel
3) QAlias
4) QRemote
Next look in the Partial Repository. If not found there, then ask the Full Repository.
So, to your scenarios:
Quote: |
In particular, resolving aliases to clustered objects. |
Does the alias have the CLUSTER() attribute? Or does the target of the alias have the CLUSTER() attribute?
This is why I need to see your definitions. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
mattfarney |
Posted: Wed Jan 11, 2012 4:09 pm Post subject: |
|
|
 Disciple
Joined: 17 Jan 2006 Posts: 167 Location: Ohio
|
THEIR.HOME on EXTERNAL has no cluster value.
MY.HOME on the other 3 servers has cluster (SOMEQ).
External and the other 3 servers are all members of SOMEQ (two of the three are full repositiories).
-mf |
|
Back to top |
|
 |
bruce2359 |
Posted: Wed Jan 11, 2012 4:38 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Is this a theoretical problem? Or are there real object definitions? _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
mattfarney |
Posted: Wed Jan 11, 2012 5:27 pm Post subject: |
|
|
 Disciple
Joined: 17 Jan 2006 Posts: 167 Location: Ohio
|
To further this discussion, I created a quick test environment with actual definitions.
TESTMQ (QM outside cluster)
Code: |
DEFINE QLOCAL ('EXTERNAL') DESCR('WebSphere MQ Default Local Queue') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(LOCAL) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(XMITQ) TRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(YES) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QLOCAL ('TESTDLQ') DESCR('WebSphere MQ Default Local Queue') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(LOCAL) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_ALIAS') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('THEIR.HOME') RQMNAME('EXTERNAL') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_ANON') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_EXTERNAL') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME('EXTERNAL') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_OUTSIDE') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME('OUTSIDE') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TESTMQ/EXTERNAL') CHLTYPE(SDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CONNAME('some.ip(1418)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(PROCESS) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') XMITQ('EXTERNAL') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(OFF) STATCHL(OFF) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER') TRPTYPE(TCP) IPADDR(' ') PORT(1417) BACKLOG(0) DESCR('Migrated from Listener') CONTROL(QMGR) REPLACE |
EXTERNAL (non-repos QM in CLUSTER)
Code: |
DEFINE QLOCAL ('EXTDLQ') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('OUTSIDE') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ(' ') RNAME(' ') RQMNAME(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QALIAS ('THEIR.HOME') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) GET(ENABLED) TARGQ(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(NOTFIXED) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TESTMQ/EXTERNAL') CHLTYPE(RCVR) TRPTYPE(TCP) BATCHSZ(50) DESCR(' ') HBINT(300) MAXMSGL(4194304) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_EXTERNAL') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1418)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NETPRTY(0) NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSSDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1419)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER.TCP') TRPTYPE(TCP) IPADDR(' ') PORT(1418) BACKLOG(0) DESCR(' ') CONTROL(QMGR) REPLACE |
INTERNAL1 (repos QM in cluster)
Code: |
DEFINE QLOCAL ('INT1DLQ') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QLOCAL ('MY.HOME') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER('MYCLUS') CLUSNL(' ') DEFBIND(NOTFIXED) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1419)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NETPRTY(0) NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_INTERNAL2') CHLTYPE(CLUSSDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1420)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER.TCP') TRPTYPE(TCP) IPADDR(' ') PORT(1419) BACKLOG(0) DESCR(' ') CONTROL(QMGR) REPLACE |
INTERNAL1 (repos QM in cluster)
Code: |
DEFINE QLOCAL ('INT2DLQ') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QLOCAL ('MY.HOME') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER('MYCLUS') CLUSNL(' ') DEFBIND(NOTFIXED) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSSDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1419)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_INTERNAL2') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1420)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NETPRTY(0) NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER.TCP') TRPTYPE(TCP) IPADDR(' ') PORT(1420) BACKLOG(0) DESCR(' ') CONTROL(QMGR) REPLACE |
|
|
Back to top |
|
 |
mattfarney |
Posted: Wed Jan 11, 2012 5:31 pm Post subject: |
|
|
 Disciple
Joined: 17 Jan 2006 Posts: 167 Location: Ohio
|
There are four attempts to write to a cluster object from the non-cluster QM. I used the MQExplorer to put a small test message on each of these QRemotes and then tracked down the results.
TEST1 was TEST_EXTERNAL. Received the expected 2085.
TEST2 was TEST_OUTSIDE. Traffic sent to INTERNAL1/INTERNAL2.
TEST3 was TEST_ALIAS. Received the expected 2082.
TEST4 was TEST_ANON. Failed at write with 2087 (not unexpected - just being thorough).
-mf |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Jan 11, 2012 6:51 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
You have to be careful with how you set up your aliases in the cluster.
I'd go one step further and make them drive traffic...
So say you have 4 qmgrs in the cluster:
brk1, brk2, gwy1, gwy2
You have a qmgr external to the cluster xtrnl
Now you want to send something to the cluster and have it load balanced between the brokers:
set up: a clustered cluster alias residing on gwy1 and gwy2.
You want to send something from xtrnl to the cluster and have it load balanced on the broker
set up:
def qr(whatever) rname(clusqname on brk1 and brk2) rqmname(cluster alias on gwy1) xmitq (gwy1)
set up: channel to gwy1 with xmitq gwy1
So how do I get the return path?
on gwy1 and gwy2:
Set up channel to xtrnl with xmitq to.xtrnl
set up cluster qmgr alias:
def qr(xtrnl) rname('') rqmname(xtrnl) xmitq(to.xtrnl) cluster(mycluster).
set up on gwy1 and gwy2
xtrnl is available in your cluster(mycluster) but will force traffic through gwy1, gwy2 and route it to the xtrnl qmgr...
In order for this to work quite as fine in overlapping clusters you will need to consider that you might want to have cluster aliases only defined on qmgrs that participate only in one of the clusters... and anyway you may not want to have the same qname defined as clustered in both overlapping clusters...
Works like a charm to route through adjacent clusters and to external qmgrs, gets however quickly quite more complicated when routing in overlapping clusters... hence the need to not have the same qname in overlapping clusters. This can be resolved by having the same physical queue (non clustered) and a cluster specific clustered alias q defined on the qmgr the instance resides on.
ex qname(mytestq) exists both on cluster a and cluster b non clustered...
qalias (mytestq.a) cluster(a)
qalias (mytestq.b) cluster(b). Thus the clustered names are unique across both clusters.
What you are striving to avoid in overlapping clusters is that for instance queue1 exists in both clusters but processes different type of messages depending on the cluster. How do you avoid messages for queue1 in cluster a to end up on queue1 in cluster b when your clusters overlap?
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
bruce2359 |
Posted: Wed Jan 11, 2012 9:30 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
mattfarney wrote: |
To further this discussion, I created a quick test environment with actual definitions.
TESTMQ (QM outside cluster)
Code: |
DEFINE QLOCAL ('EXTERNAL') DESCR('WebSphere MQ Default Local Queue') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(LOCAL) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(XMITQ) TRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(YES) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QLOCAL ('TESTDLQ') DESCR('WebSphere MQ Default Local Queue') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(LOCAL) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_ALIAS') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('THEIR.HOME') RQMNAME('EXTERNAL') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_ANON') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_EXTERNAL') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME('EXTERNAL') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('TEST_OUTSIDE') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME('OUTSIDE') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TESTMQ/EXTERNAL') CHLTYPE(SDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CONNAME('some.ip(1418)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(PROCESS) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') XMITQ('EXTERNAL') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(OFF) STATCHL(OFF) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER') TRPTYPE(TCP) IPADDR(' ') PORT(1417) BACKLOG(0) DESCR('Migrated from Listener') CONTROL(QMGR) REPLACE |
EXTERNAL (non-repos QM in CLUSTER)
Code: |
DEFINE QLOCAL ('EXTDLQ') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QREMOTE ('OUTSIDE') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) XMITQ(' ') RNAME(' ') RQMNAME(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QALIAS ('THEIR.HOME') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) SCOPE(QMGR) GET(ENABLED) TARGQ(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(NOTFIXED) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TESTMQ/EXTERNAL') CHLTYPE(RCVR) TRPTYPE(TCP) BATCHSZ(50) DESCR(' ') HBINT(300) MAXMSGL(4194304) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_EXTERNAL') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1418)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NETPRTY(0) NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSSDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1419)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER.TCP') TRPTYPE(TCP) IPADDR(' ') PORT(1418) BACKLOG(0) DESCR(' ') CONTROL(QMGR) REPLACE |
INTERNAL1 (repos QM in cluster)
Code: |
DEFINE QLOCAL ('INT1DLQ') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QLOCAL ('MY.HOME') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER('MYCLUS') CLUSNL(' ') DEFBIND(NOTFIXED) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1419)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NETPRTY(0) NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_INTERNAL2') CHLTYPE(CLUSSDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1420)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER.TCP') TRPTYPE(TCP) IPADDR(' ') PORT(1419) BACKLOG(0) DESCR(' ') CONTROL(QMGR) REPLACE |
INTERNAL1 (repos QM in cluster)
Code: |
DEFINE QLOCAL ('INT2DLQ') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE QLOCAL ('MY.HOME') DESCR(' ') PUT(ENABLED) DEFPRTY(0) DEFPSIST(NO) CLWLUSEQ(QMGR) SCOPE(QMGR) GET(ENABLED) MAXDEPTH(5000) MAXMSGL(4194304) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) HARDENBO USAGE(NORMAL) NOTRIGGER TRIGTYPE(FIRST) TRIGDPTH(1) TRIGMPRI(0) TRIGDATA(' ') PROCESS(' ') INITQ(' ') RETINTVL(999999999) BOTHRESH(0) BOQNAME(' ') QDEPTHHI(80) QDEPTHLO(20) QDPMAXEV(ENABLED) QDPHIEV(DISABLED) QDPLOEV(DISABLED) QSVCINT(999999999) QSVCIEV(NONE) DISTL(NO) NPMCLASS(NORMAL) STATQ(QMGR) MONQ(QMGR) ACCTQ(QMGR) CLUSTER('MYCLUS') CLUSNL(' ') DEFBIND(NOTFIXED) CLWLRANK(0) CLWLPRTY(0) REPLACE
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSSDR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1419)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MSGDATA(' ') MSGEXIT(' ') NPMSPEED(FAST) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) USERID(' ') SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE CHANNEL ('TO_INTERNAL2') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) BATCHINT(0) BATCHHB(0) BATCHSZ(50) CLUSTER('MYCLUS') CLUSNL(' ') CONNAME('some.ip(1420)') LOCLADDR(' ') CONVERT(NO) DESCR(' ') DISCINT(6000) HBINT(300) LONGRTY(999999999) LONGTMR(1200) SHORTRTY(10) SHORTTMR(60) MAXMSGL(4194304) MCATYPE(THREAD) MCAUSER(' ') MRDATA(' ') MREXIT(' ') MRRTY(10) MRTMR(1000) MSGDATA(' ') MSGEXIT(' ') NETPRTY(0) NPMSPEED(FAST) PUTAUT(DEF) RCVDATA(' ') RCVEXIT(' ') SCYDATA(' ') SCYEXIT(' ') SENDDATA(' ') SENDEXIT(' ') SEQWRAP(999999999) SSLCAUTH(REQUIRED) SSLCIPH(' ') SSLPEER(' ') KAINT(AUTO) MONCHL(QMGR) STATCHL(QMGR) CLWLPRTY(0) CLWLRANK(0) CLWLWGHT(50) COMPMSG(NONE) COMPHDR(NONE) REPLACE
DEFINE LISTENER ('LISTENER.TCP') TRPTYPE(TCP) IPADDR(' ') PORT(1420) BACKLOG(0) DESCR(' ') CONTROL(QMGR) REPLACE |
|
Were you trying to be deliberately difficult? If so, it worked.
I asked for your definitions with relevant attributes and values, so we wouldn't have to deal with MRTMR(1000) MAXMSGL(4194304) and irrelevant stuff like that. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
mattfarney |
Posted: Thu Jan 12, 2012 9:27 am Post subject: |
|
|
 Disciple
Joined: 17 Jan 2006 Posts: 167 Location: Ohio
|
Code: |
DEFINE QLOCAL ('EXTERNAL') CLWLUSEQ(LOCAL) USAGE(XMITQ) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QLOCAL ('TESTDLQ') CLWLUSEQ(LOCAL) USAGE(NORMAL) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QREMOTE ('TEST_ALIAS') XMITQ('EXTERNAL') RNAME('THEIR.HOME') RQMNAME('EXTERNAL') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QREMOTE ('TEST_ANON') XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QREMOTE ('TEST_EXTERNAL') XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME('EXTERNAL') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QREMOTE ('TEST_OUTSIDE') XMITQ('EXTERNAL') RNAME('MY.HOME') RQMNAME('OUTSIDE') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE CHANNEL ('TESTMQ/EXTERNAL') CHLTYPE(SDR) XMITQ('EXTERNAL')
DEFINE QLOCAL ('EXTDLQ') CLWLUSEQ(QMGR) USAGE(NORMAL) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QREMOTE ('OUTSIDE') XMITQ(' ') RNAME(' ') RQMNAME(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QALIAS ('THEIR.HOME') TARGQ(' ') CLUSTER(' ') CLUSNL(' ') DEFBIND(NOTFIXED)
DEFINE CHANNEL ('TESTMQ/EXTERNAL') CHLTYPE(RCVR)
DEFINE CHANNEL ('TO_EXTERNAL') CHLTYPE(CLUSRCVR) CLUSTER('MYCLUS')
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSSDR) CLUSTER('MYCLUS')
DEFINE QLOCAL ('INT1DLQ') CLWLUSEQ(QMGR) USAGE(NORMAL) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QLOCAL ('MY.HOME') CLWLUSEQ(QMGR) USAGE(NORMAL) CLUSTER('MYCLUS') CLUSNL(' ') DEFBIND(NOTFIXED)
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSRCVR) CLUSTER('MYCLUS')
DEFINE CHANNEL ('TO_INTERNAL2') CHLTYPE(CLUSSDR) CLUSTER('MYCLUS')
DEFINE QLOCAL ('INT2DLQ') CLWLUSEQ(QMGR) USAGE(NORMAL) CLUSTER(' ') CLUSNL(' ') DEFBIND(OPEN)
DEFINE QLOCAL ('MY.HOME') CLWLUSEQ(QMGR) USAGE(NORMAL) CLUSTER('MYCLUS') CLUSNL(' ') DEFBIND(NOTFIXED)
DEFINE CHANNEL ('TO_INTERNAL1') CHLTYPE(CLUSSDR) CLUSTER('MYCLUS')
DEFINE CHANNEL ('TO_INTERNAL2') CHLTYPE(CLUSRCVR) CLUSTER('MYCLUS') |
-mf |
|
Back to top |
|
 |
mattfarney |
Posted: Fri Jan 13, 2012 12:33 pm Post subject: |
|
|
 Disciple
Joined: 17 Jan 2006 Posts: 167 Location: Ohio
|
Noticed a problem with one of those definitions.
Changed THEIR.HOME
to
Code: |
DEFINE QALIAS ('THEIR.HOME') DESCR(' ') TARGQ('MY.HOME') CLUSTER(' ') CLUSNL(' ') DEFBIND(NOTFIXED) REPLACE |
I tried the test again and got the same result (2082).
If I write directly to the alias (using MQ explorer) it works as expected (balancing between MY.HOME on int1/2).
If I repoint THEIR.HOME to a local queue on EXTERNAL, it works regardless of source.
So here's the crux of my question:
If I am writing directly to a QM, an alias will resolve whether the baseQ is local or a cluster queue on another machine.
If I am writing from another QM to a QM over a non-cluster channel, the alias will only resolve if the baseQ is local.
Why is the behavior this way? Why should the source of the action matter? Shouldn't the name resolution be the same in both cases?
-mf |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Jan 13, 2012 12:43 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
mattfarney wrote: |
Noticed a problem with one of those definitions.
Changed THEIR.HOME
to
Code: |
DEFINE QALIAS ('THEIR.HOME') DESCR(' ') TARGQ('MY.HOME') CLUSTER(' ') CLUSNL(' ') DEFBIND(NOTFIXED) REPLACE |
I tried the test again and got the same result (2082).
If I write directly to the alias (using MQ explorer) it works as expected (balancing between MY.HOME on int1/2).
If I repoint THEIR.HOME to a local queue on EXTERNAL, it works regardless of source.
So here's the crux of my question:
If I am writing directly to a QM, an alias will resolve whether the baseQ is local or a cluster queue on another machine.
If I am writing from another QM to a QM over a non-cluster channel, the alias will only resolve if the baseQ is local.
Why is the behavior this way? Why should the source of the action matter? Shouldn't the name resolution be the same in both cases?
-mf |
Well if you read carefully the cluster manual, they tell you, you need to set up a "cluster alias" when sending messages from a non cluster qmgr.
I believe the subtlety here is that when sending from a non cluster qmr into the gateway the assumption is that the target is local to the gwy qmgr and that is not the case with the alias queue.
So to resolve correctly in the cluster you need a cluster alias ie remote queue that tells the gwy qmgr that it needs to act as if there is a next hop.
Queue name resolution may be different if done inside the qmgr with no expectation of a next hop, compared to next hop resolution type...
Anyways I am sure somebody from Hursley will be able to give us a better insight into these internals...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
mqjeff |
Posted: Sat Jan 14, 2012 1:14 pm Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
It's naught to do with internals.
QALIASes only override the ObjectQname on an MQOpen, they don't affect the ObjectQmgrName.
Cause, you know, they only have another queue name in them, not a qmgr name as well... if they had a qmgr name, they'd be a qremote, not a qalias. |
|
Back to top |
|
 |
bruce2359 |
Posted: Sun Jan 15, 2012 8:27 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
|
Back to top |
|
 |
|