2017-08-22 61 views
1

我們試圖將消息放置在IBM消息羣集隊列中。當我們把消息隊列以下錯誤將被拋出:在羣集隊列中放置消息

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

當我們嘗試把消息放在本地隊列上它的正常工作我們的隊列管理器中的一個。但是在羣集隊列中它不起作用。

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通常表示您連接到的隊列管理器無法在本地定義或通過它所屬的羣集找到此隊列。

如果您嘗試打開INPUTGET)的羣集隊列,則得到2085的另一個原因是。您只能將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並再次嘗試訪問它。