FTE代理可以使用標準的QMgr路由和別名。教科書這樣做的方法是在目標QMgr之後命名傳輸隊列並添加別名。例如,在QMGRA你定義:
* On QMGRA
DEFINE QL(QMGRB) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRB) RQMNAME('') RNAME('')
現在給QMGRC任何消息通過正常名稱解析。由於QRemote,QMgr通過QMGRB查找到QMGRC的路徑。由於這個原因,具有空白RNAME的QRemote定義被稱爲QMgr別名。
然後在QMGRB上,您將有一個通向QMGRC的傳輸隊列,並巧合地命名爲QMGRC。反過來將適用於收回消息。你需要一個C指向B的QMgr別名。
如果你的XMit隊列不使用遠程QMgr的名字,那麼你需要額外的QMgr別名。例如,很多人將字符串XMITQ到XMIT隊列名(這在我看來會導致更多的問題比它解決)和系統上一樣,你需要以下條件:
* On QMGRA
DEFINE QL(QMGRB.XMITQ) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRB.XMITQ) RQMNAME('') RNAME('')
* On QMGRB
DEFINE QL(QMGRC.XMITQ) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRC.XMITQ) RQMNAME('') RNAME('')
的第一部分這和以前一樣。 WMQ查找QMGRC,查找QRemote並將消息放到指定的XMitQ上。但是,當消息到達QMGRB時,它不能直接解析到傳輸隊列,因爲名稱與遠程QMgr不匹配。因此,我們定義了一個新的QRemote,將名稱QMGRC解析爲導致QMGRC的XMitQ。
您還可以在QMGRA和QMGRB之間使用羣集分辨率。在這種情況下,您可能會放棄設置RQMNAME並將XMitQ留在A上的QMgr別名上或者同時設置兩者。另一種選擇是在B上創建名爲QMGRC的QMgr別名並將其通告給羣集。
使用專用通道保持文件傳輸流量不受羣集XMitQ和羣集通道的限制,因此可以提供與常規流量隔離的一類服務。文件傳輸流量雖然都是非持久性的,但一次只能在XMitQ上放置每幀以上的幀,因此您可能不需要這種隔離級別。 (使用WMQ V7.5可以做到與重疊簇和分割簇XMitQ相同的事情)
您不需要FTE代理來測試它,只需使用來自SupportPac MA01的Q程序並指定本地QMgr和連接時遠程QMgr名稱。從電子郵件線程
UPDATE:
OK,所以這裏我用嘲笑這件事使用羣集方案的定義。我定義了3個QMgr,創建了一個集羣,其中QMGRA作爲存儲庫,QMGRB作爲成員,QMGRB和C之間使用SDR/RCVR通道的網關。從A到達C的任何到達C的消息都將解析爲XMitQ。 A知道C,因爲名爲QMGRC的QMgr別名指向QMGRC.XMITQ。 (我嘗試將一個稱爲QMGRC的XMitQ發佈到羣集中,但似乎羣集將它識別爲本地隊列,並且不會對其執行QMgr名稱解析。將它定義爲QMGRC.XMITQ並創建QMGRC QMgr別名可以讓QMGRC解析本地和羣集)
運行這些後,我能夠連接使用Q程序,沒有QREMOTE定義,指定一個RNAME的好處,併發送消息從C到A和從A到C到隊列命名TEST.NAME.RESOLUTION像這樣:
C:\Users\T.Rob>q -m QMGRA -oQMGRC/TEST.NAME.RESOLUTION
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May 1 2012 ]
Connecting ...connected to 'QMGRA'.
>Testing A to C
>^C
C:\Users\T.Rob>q -m QMGRC -oQMGRA/TEST.NAME.RESOLUTION
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May 1 2012 ]
Connecting ...connected to 'QMGRC'.
>Testing C to A
>^C
是,羣集名稱是「EDELMANN」並在此使用它的發音就像傑裏宋飛用發音「紐曼」。 ;-)
* On QMGRA:
ALTER QMGR +
REPOS(EDELMANN)
DEFINE QLOCAL('TEST.NAME.RESOLUTION') +
DEFPSIST(YES) +
REPLACE
DEFINE CHANNEL('EDELMANN.QMGRA') +
CHLTYPE(CLUSRCVR) +
CLUSTER('EDELMANN') +
CONNAME('localhost(3414)') +
TRPTYPE(TCP) +
REPLACE
* On QMGRB:
DEFINE QREMOTE('QMGRC') +
CLUSTER('EDELMANN') +
RQMNAME('QMGRC') +
XMITQ('QMGRC.XMITQ') +
REPLACE
DEFINE QLOCAL('QMGRC.XMITQ') +
INITQ('SYSTEM.CHANNEL.INITQ') +
TRIGGER +
TRIGDATA('QMGRB.QMGRC') +
USAGE(XMITQ) +
REPLACE
DEFINE CHANNEL('EDELMANN.QMGRA') +
CHLTYPE(CLUSSDR) +
CLUSTER('EDELMANN') +
CONNAME('localhost(3414)') +
TRPTYPE(TCP) +
REPLACE
DEFINE CHANNEL('EDELMANN.QMGRB') +
CHLTYPE(CLUSRCVR) +
CLUSTER('EDELMANN') +
CONNAME('localhost(3415)') +
TRPTYPE(TCP) +
REPLACE
DEFINE CHANNEL('QMGRB.QMGRC') +
CHLTYPE(SDR) +
CONNAME('localhost(3416)') +
TRPTYPE(TCP) +
XMITQ('QMGRC.XMITQ') +
REPLACE
DEFINE CHANNEL('QMGRC.QMGRB') +
CHLTYPE(RCVR) +
TRPTYPE(TCP) +
REPLACE
* On QMGRC:
DEFINE QREMOTE('QMGRA') +
RQMNAME('QMGRA') +
XMITQ('QMGRB') +
REPLACE
DEFINE QLOCAL('QMGRB') +
INITQ('SYSTEM.CHANNEL.INITQ') +
TRIGGER +
TRIGDATA('QMGRC.QMGRB') +
USAGE(XMITQ) +
REPLACE
DEFINE QLOCAL('TEST.NAME.RESOLUTION') +
REPLACE
DEFINE CHANNEL('QMGRB.QMGRC') +
CHLTYPE(RCVR) +
TRPTYPE(TCP) +
REPLACE
DEFINE CHANNEL('QMGRC.QMGRB') +
CHLTYPE(SDR) +
CONNAME('localhost(3415)') +
TRPTYPE(TCP) +
XMITQ('QMGRB') +
REPLACE
如果A和B在MQ集羣中,但是,我猜測xmitq QMGR2不需要在QMGRA上定義正確嗎?我不想使用從A到B的xmitq和觸發發送器通道... –
是的,您可以使用羣集分辨率。在這種情況下,您可能會忽略設置RQMNAME並將XMitQ留空。或者同時設置。使用專用通道將文件XFer流量保留在羣集XMitQ之外並離開羣集通道,從而爲常規流量提供一類服務隔離。文件XFer流量雖然都是非持久性的,但一次只能在XMitQ上放置每幀文件,因此您可能不需要該隔離級別。 (使用WMQ V7.5可以對重疊的羣集和分割羣集XMitQ做同樣的事情) –
實際上,這是一個FTE特定的隊列管理器設置,它使它與我們的常規MQ流量完全隔離,即使Len McWilliams向我保證FTE是旨在運行一個非侵入性的低優先級。另外:不會qmgrc需要一個類似的遠程定義返回到QMGRA? –