2017-08-22 17 views
1

IBMのメッセージクラスタ化されたキューにメッセージを配置しようとしています。私たちは、キューにメッセージを配置すると、次のエラーがスローされます。クラスタ化されたキューにメッセージを配置

MQJE001: Completion Code '2', Reason '2085'. 

我々はそれがうまく働いている私たちのキュー・マネージャの1のローカルキューにメッセージを配置しようとします。しかし、クラスタ化されたキューでは動作しません。

MQQueue queue = null; 
MQMessage mqMessage = null; 

MQEnvironment.hostname = settings.getServer(); 
MQEnvironment.channel = settings.getChannel(); 
MQEnvironment.port = settings.getPort(); 

MQQueueManager queueManager = new MQQueueManager(settings.getQueueManager()); 

int openOptions = CMQC.MQOO_INPUT_AS_Q_DEF | CMQC.MQOO_OUTPUT; 

queue = queueManager.accessQueue(settings.getQueue(), openOptions); 

クラスタ化されたキューにメッセージを配置するのに役立つ人はいますか?

答えて

2

MQRC 2085MQRC_UNKNOWN_OBJECT_NAMEです。これは通常、接続先のキュー・マネージャーがローカルに定義されたキューまたはそのメンバーであるクラスターを見つけることができないことを意味します。

2085が表示されるもう1つの理由は、INPUTGET)のクラスタ化キューを開こうとした場合です。ローカル・キュー・マネージャー上に配置されていないクラスター化キューに対しては、OUTPUTPUT)しか指定できません。 openOptionsからCMQC.MQOO_INPUT_AS_Q_DEFを削除すると、問題が解決するはずです。問題とは無関係に、常にCMQC.MQOO_FAIL_IF_QUIESCINGを含めることをお勧めします。これにより、キュー・マネージャーは正常にシャットダウンされ、接続中のプロセスによって保持されることはありません。

int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING | CMQC.MQOO_OUTPUT; 

あなたが接続されているキュー・マネージャは、あまりにものメンバーであり、どのようなクラスタのキュー・マネージャは、それが次のように上のホストされていることをクラスターに沿っているとその部分リポジトリにこのキューを知っている場合は、確認することができますコマンド:

DIS QC(clustered_queue_name_here) CLUSTER CLUSQMGR 

部分リポジトリはクラスタ化されたキューについて、それはあなたがあなたのopenOptionsを修正するまで表示され、再度アクセスしようとしないかもしれないので、それがアクセスされた最初の時間を学習します。

関連する問題