2012-09-26 55 views
2

QMGR A有一個稱爲AgentA的MFT代理。 QMGR B有一個名爲AgentB的MFT代理。 QMGR C有一個名爲AgentC的MFT代理。 這些都是MFT服務器部署,而不是「客戶端」。分佈式環境中的WMQ FTE

QMGR A和B是一個MQ集羣的成員,稱爲FTECluster

QMGR c通過一個簡單的發送器/接收器對連接到QMGR B(羣集外部)。

QMGR A運行的服務器上的MFT用戶希望將文件從該服務器發送到運行QMGR C的服務器。

QMGR B是指定協調QMGR,因此,如果經由資源管理器連接有時,創建一個轉移,使用

QMGRA作爲源和 QMGRC作爲目的地,我會一直希望該試劑將遇到2087錯誤(這是我得到的),目標遠程隊列不知道?或者是否有一些「額外」的設置,而不是通過QMGRB使QMGRA與QMGRC相熟?

應用程序是這樣的:我有位於DMZ(網關,QMGR B)背後的基於飛地的隊列管理器(QMGRA),並且想通過MFT將外部合作伙伴的文件移動到飛行區內/與我們使用隊列將重疊羣集中的消息或羣集中的隊列管理器移入/移出羣集中的消息,以及將鄰接羣集中的消息移出/移入隊列不同。或者,允許MFT用戶在隔離區內進行文件傳輸,以便流量不會遊離到DMZ上進行內部傳輸。

如果這不可行,那麼我們必須在內部飛地服務器上的客戶端之間,通過基於DMZ的MFT服務器之間以及外部/外部客戶端之間創建MFT傳輸,並且需要內部代理/服務器在指定飛地隊列管理器上,用於在內部交換文件。

回答

2

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 
+0

如果A和B在MQ集羣中,但是,我猜測xmitq QMGR2不需要在QMGRA上定義正確嗎?我不想使用從A到B的xmitq和觸發發送器通道... –

+0

是的,您可以使用羣集分辨率。在這種情況下,您可能會忽略設置RQMNAME並將XMitQ留空。或者同時設置。使用專用通道將文件XFer流量保留在羣集XMitQ之外並離開羣集通道,從而爲常規流量提供一類服務隔離。文件XFer流量雖然都是非持久性的,但一次只能在XMitQ上放置每幀文件,因此您可能不需要該隔離級別。 (使用WMQ V7.5可以對重疊的羣集和分割羣集XMitQ做同樣的事情) –

+0

實際上,這是一個FTE特定的隊列管理器設置,它使它與我們的常規MQ流量完全隔離,即使Len McWilliams向我保證FTE是旨在運行一個非侵入性的低優先級。另外:不會qmgrc需要一個類似的遠程定義返回到QMGRA? –

相關問題