2012-03-19 16 views
1

いつものように、IBMの文書化は、それが何を伝えるのに最適ですが、重要な詳細を残しています。これが既にここに答えられている場合にはお詫び申し上げます - 検索用語は、残念なことに大部分が一般的であるか少なくともあいまいであり、私は運がない数百の質問を見てきました。WebSphere MQ 7.0分散型パブリッシュ/サブスクライブ用のキュー・マネージャーの接続方法

私には2つの(IBM i)サーバーがあり、それぞれに1つのWMQ 7.0キュー・マネージャーがあります。私はそれらの間を走る2つのチャンネルを持っています - それぞれの方向。

パブリケーションとサブスクリプションのスコープが「すべて」で、プロキシサブスクリプションの動作が「フォース」のトピックが「サーバーA」に定義されています。

私はスコープ "All"で "サーバーB"に定義されたサブスクリプションを持っています。

すべてが稼働しているが、私は(MQ Explorerを使用して)、サーバーA上のトピックにメッセージをドロップすると、何も私はこれを行うために必要な「代理サブスクリプション」について読んだことがあるサーバB

に表示されません私の人生では、これらがどのように作られるかを理解できません。

ありがとうございました。私は数時間でこれを(この前に決してパブ/サブを使用したことはない)この障害を乗り越えるためだけに持っている。

出版物はBにキュー・マネージャーに流れるようにするためにあなたはセットアップにこれら二つのキュー・マネージャ間の階層構造を持っている出版物はB.

上のキュー・マネージャーに流れるためのセットアップにこれら二つのキュー・マネージャ間の階層構造を持っています

子の子としてB上の親およびキュー・マネージャーとしてキュー・マネージャーを想定すると、Bのキュー・マネージャーのRUNMQSCプロンプトで「ALTER QMGR PARENT()」を発行する必要があります。これにより、2つのキュー・マネージャー間に階層が作成されます。 Bのキュー・マネージャーでサブスクリプションが作成されると、プロキシー・サブスクリプションは自動的にAのキュー・マネージャーに送られます。キュー・マネージャーをAの親とキュー・マネージャーとしてBの子として考えると、 "ALTER QMGR PARENT()"をBのキュー・マネージャーのRUNMQSCプロンプトが表示されます。これにより、2つのキュー・マネージャー間に階層が作成されます。

(サーバ名 - - 私には少しより意味で)私の設定の詳細詳細:サブスクリプションがB上のキュー・マネージャー上に作成されると、プロキシサブスクリプションが自動的にA.上

EDITを管理者をキューに流れますサーバA2では

Queue manager A7.QUEUE.MANAGER 
Sender channel A7.TO.A2 with transmission queue A7.TO.A2 
Alias queue A2.QUEUE.MANAGER pointing to A7.TO.A2 
Receiver channel A2.TO.A7 

:サーバーA7に

Queue manager A2.QUEUE.MANAGER 
Sender channel A2.TO.A7 with transmission queue A2.TO.A7 
Alias queue A7.QUEUE.MANAGER pointing to A2.TO.A7 
Receiver channel A7.TO.A2 
I then issued ALTER QMGR PARENT('A7.QUEUE.MANAGER') 

私はA7に(上)ALTERを発行した後トピックを持っている私は、サブスクリプションを追加しましたA2上のトピックに。

display pubsub type(ALL)        
3 : display pubsub type(ALL)      
AMQ8723: Display pub/sub status details.    
QMNAME(A2.QUEUE.MANAGER) TYPE(LOCAL) 

display pubsub type(ALL)        
1 : display pubsub type(ALL)      
AMQ8723: Display pub/sub status details.    
QMNAME(A7.QUEUE.MANAGER) TYPE(LOCAL) 

答えて

3

2つのQMgrsをクラスタ化してトピックをクラスタにアドバタイズします。 WMQは、クラスタ全体でパブリケーションを利用できるようにします。QMGR02

# Always create CLUSRCVR first and advertise to cluster 
# Substitute your CONNAME parms, QMgr name, channel names, etc. 
DEF CHL(CLUSTERNAME.QMGR02) CHLTYPE(CLUSRCVR) + 
    TRPTYPE(TCP) + 
    CONNAME('127.0.0.1(1415)') + 
    CLUSTER('CLUSTERNAME') + 
    REPLACE 

# Then conecct to the repos and advertise the CLUSSDR to the cluster too 
# Substitute your CONNAME parms, QMgr name, channel names, etc. 
DEF CHL(CLUSTERNAME.QMGR01) CHLTYPE(CLUSSDR) + 
    TRPTYPE(TCP) + 
    CONNAME('127.0.0.1(1414)') + 
    CLUSTER('CLUSTERNAME') + 
    REPLACE 

QMGR01で

# Make the QMgr a cluster repository 
ALTER QMGR REPOS('CLUSTERNAME') 

# Create CLUSRCVR and advertise to cluster 
# Substitute your CONNAME parms, QMgr name, channel names, etc. 
DEF CHL(CLUSTERNAME.QMGR01) CHLTYPE(CLUSRCVR) + 
    TRPTYPE(TCP) + 
    CONNAME('127.0.0.1(1414)') + 
    CLUSTER('CLUSTERNAME') + 
    REPLACE 

# Create topic object and advertise to cluster 
DEF TOPIC('ROOT') TOPICSTR('ROOT') CLUSTER('CLUSTERNAME') REPLACE 

今、あなたは、クラスタに宣伝されたトピックに公開することができます。QMgr01

QMgr02

amqssub ROOT/Whatever QMGR02 

あなたがオブジェクトROOTに名前を付けたり、トピックの名前空間のトップとしてそれを使用する必要はありません。これは任意の例であり、必要なものを使用することができます。プロダクションでは、アクセス制御リストをハングするトピック階層の第2または第3レベルにいくつかのトピックオブジェクトが存在するでしょう。一般に、これらのオブジェクトは、トピックをクラスタに広告するために使用されます。

いくつかの追加の注意事項:

  • クラスタにSYSTEM.BASE.TOPICまたはSYSTEM.DEFAULT.TOPICを宣伝することはできません。
  • クラスタ化されたトピックは、クラスタ内の1つのノードでのみ定義する必要があります。どのノードでも構いませんが、プライマリの完全リポジトリにアドバタイズすることをお勧めします。そうすれば、クラスター化されたトピックオブジェクトがどこに定義されているかを知ることができ、リポジトリーの可用性が高まります。
  • 重複するローカルおよびクラスタ化されたトピックオブジェクトがある場合は、ローカルトピックオブジェクトが優先されます。

詳細はCreating a new cluster topicを参照してください。また、Creating and configuring a queue manager clusterには、クラスタを作成してQMgrsを追加するタスクがあります。しかし、私は上記の私のWindowsホスト上でテストし、この最小クラスターでは、パブ/サブは素晴らしい仕事をした。

+0

ありがとう。私は今のところクラスタールートには行かないことを望んでいましたが、もし私がそうするなら、私はあなたの優れた情報を最もよく参照します。 – zkarj

2

あなたは子供のようにBの親とキューマネージャとしてAキュー・マネージャを仮定B.

上でマネージャーをキューに流れるようにセットアップする出版物のためにこれら二つのキュー・マネージャ間の階層構造を持っている、あなたは、「ALTERを発行する必要がQMGR PARENT() "をBのキュー・マネージャーのRUNMQSCプロンプトに追加します。これにより、2つのキュー・マネージャー間の階層が作成されます。サブスクリプションがBのキュー・マネージャーに作成されると、プロキシー・サブスクリプションは自動的にAのキュー・マネージャーに流れます。

+0

ありがとうございます。これは私の提案されたシナリオを働かせるのに十分であるはずです(明確に定義された出版システムがあり、残りが購読者である場合)。しかし、一般的な意味では、これはサブスクリプションが他の方法でも流れていることを意味しますか?私たちには複数の開発者/テストボックスがあり、各ボックスに他の出版物を購読させることが有用な場合があります。 – zkarj

+0

まだ何かが正しくありません。 私はこの階層を念頭に置いてもっと多くの読書をしました。私は、ローカルキューマネージャーがそれを見つけることができるように外部キューマネージャーの名前をエイリアスキューに追加する必要があることに気付きましたが、サブスクリプションが伝播しているのをまだ見ることができません(親のサブスクリプションエントリー?)、どちらもテストの公開メッセージが届いていません。 – zkarj

+0

保留中の編集が上記の質問に移行されました – trashgod

関連する問題