はい!PerlモジュールはWMQAPIの薄いベニヤであり、すべての基本的なオプションと、本当に難解なもののほとんども公開しています。
キューを開くと、WebSphere MQは、キュー名とQMgr名に指定した値に対して名前解決を実行します。キューとQMgrの両方の名前を指定すると、オブジェクト参照は完全に修飾され、WMQは名前付きでそれを開こうとします。したがって、指定した名前がローカルQMgrであり、クラスター化されたキューにローカルで定義されたインスタンスがない場合、オープンは2085の不明なオブジェクト名で失敗します。
クラスタ化されたキューを開く秘訣は、QMgr名にnull値を指定することです。これにより、名前解決はローカルQMgrで同じ名前のキューをチェックし、何も見つからない場合はクラスターリポジトリをチェックして、クラスター化されたキューへのオープンを解決します。これが機能するには、キューをクラスターにアドバタイズする必要があることに注意してください。具体的には、ターゲットキューのCLUSTERまたはCLUSNL属性は空白ではなく、ソースQMgrが参加するクラスターを参照する必要があります。同様に、宛先QMgrもソースQMgrと同じクラスターに参加する必要があります。
ローカルQMgrではないオープンでQMgr名を指定した場合、WMQはQMgr名のみを解決しようとすることにも注意してください。そのQMgrへのルートを解決できる場合は、そこにメッセージを送信します。これは、クラスター内で、完全修飾名を知っている限り、任意のQMgrの任意のキューにメッセージを送信できることを意味します。
最後に、クラスター化されたキューに対してローカルエイリアスを定義できます。たとえば、QMGRAとDEF QA(TARGET.QUEUE)TARGQ(TARGET.QUEUE)を使用していて、同じクラスター内のQMGRBとQMGRCでDEF QL(TARGET.QUEUE)CLUSTER(MYCLUS)を使用している場合、QMGRを開くことができます。 = QMGRA QUEUE = TARGET.QUEUEでも、期待どおりに機能します。エイリアスはクラスターにアドバタイズされませんが、ターゲットキューはアドバタイズされることに注意してください。このアプローチの唯一の問題は、クラスタークエリに時間がかかりすぎると、API呼び出しが最初に開かれたときに失敗する可能性があることです。本番環境でこれを行うときは、実際のアプリケーションがキューを開く前に、常に事前にエイリアスでamqsputを使用して、QMgrがリポジトリにクエリを実行するようにします。なぜあなたはこれをしますか?セキュリティが懸念される場合は、上記のように、すべてのアプリをクラスターXMitQに直接承認することはおそらく望ましくありません。SYSTEM.ADMIN.COMMAND.QUEUEを含む、クラスター内の任意のQMgr上の任意のキュー。エイリアスは、認証をハングさせ、ユーザーをクラスター内の特定の宛先に制限する場所を提供します。
簡単に言うと、Open呼び出しでnullのQMgr名を指定するか、クラスター化されたキューにローカルエイリアスを設定してください。これのセキュリティ面の詳細については、http://t-rob.net/linksのWMQセキュリティプレゼンテーションを参照してください。