剛開始學習WebSphere MQ,安裝好客戶端后根據教程建立了佇列管理器,佇列,通道 使用java代碼想實作sendMessage和getMessage,在send的時候出錯
com.ibm.mq.MQException: MQJE001: MQException 出現:完成代碼是 2,原因為 2058
MQJE036: 佇列管理器拒絕連接嘗試
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:212)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:318)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:338)
at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:84)
at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:168)
at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:772)
at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:697)
at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:657)
at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:153)
at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:451)
at com.cn.bnpp.ssw.MessageByMQ.sendMessage(MessageByMQ.java:102)
at com.cn.bnpp.ssw.MessageByMQ.main(MessageByMQ.java:182)
Caused by: com.ibm.mqservices.MQInternalException: MQJE001: MQException 出現:完成代碼是 2,原因為 2058
MQJE036: 佇列管理器拒絕連接嘗試
at com.ibm.mq.MQv6InternalCommunications.parseConnReply(MQv6InternalCommunications.java:1757)
at com.ibm.mq.MQv6InternalCommunications.connectToQueueManager(MQv6InternalCommunications.java:1695)
at com.ibm.mq.MQv6InternalCommunications.initialize(MQv6InternalCommunications.java:278)
at com.ibm.mq.MQv6InternalCommunications.<init>(MQv6InternalCommunications.java:102)
at com.ibm.mq.MQSESSIONClient.MQCONNX(MQSESSIONClient.java:1337)
at com.ibm.mq.MQSESSIONClient.MQCONN(MQSESSIONClient.java:1246)
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:184)
... 11 more
Exception in thread "main" java.lang.NullPointerException
at com.cn.bnpp.ssw.MessageByMQ.sendMessage(MessageByMQ.java:125)
at com.cn.bnpp.ssw.MessageByMQ.main(MessageByMQ.java:182)
uj5u.com熱心網友回復:
用下面代碼可以成功的往以前專案中已存在的Q佇列中send和getmessage,但是我自己新建的佇列就不行了public static int sendMessage(String qName,String message){
int result=0;
try{
//設定將要連接的佇列屬性
// Note. The MQC interface defines all the constants used by the WebSphere MQ Java programming interface
//(except for completion code constants and error code constants).
//MQOO_INPUT_AS_Q_DEF:Open the queue to get messages using the queue-defined default.
//MQOO_OUTPUT:Open the queue to put messages.
/*目標為遠程佇列,所有這里不可以用MQOO_INPUT_AS_Q_DEF屬性*/
//int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
/*以下選項可適合遠程佇列與本地佇列*/
int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
//連接佇列
//MQQueue provides inquire, set, put and get operations for WebSphere MQ queues.
//The inquire and set capabilities are inherited from MQManagedObject.
/*關閉了就重新打開*/
if(qMgr==null || !qMgr.isConnected()){
qMgr = new MQQueueManager(qmName);
}
MQQueue queue = qMgr.accessQueue(qName, openOptions);
//定義一個簡單的訊息
MQMessage putMessage = new MQMessage();
//將資料放入訊息緩沖區
putMessage.writeUTF(message);
//設定寫入訊息的屬性(默認屬性)
MQPutMessageOptions pmo = new MQPutMessageOptions();
//將訊息寫入佇列
queue.put(putMessage,pmo);
queue.close();
System.out.println("sendMessage Done");
}catch (MQException ex) {
System.out.println("A WebSphere MQ error occurred : Completion code "
+ ex.completionCode + " Reason code " + ex.reasonCode);
ex.printStackTrace();
}catch (IOException ex) {
System.out.println("An error occurred whilst writing to the message buffer: " + ex);
}catch(Exception ex){
ex.printStackTrace();
}finally{
try {
qMgr.disconnect();
} catch (MQException e) {
e.printStackTrace();
}
}
return result;
}
uj5u.com熱心網友回復:
在自己原來的專案中有兩個佇列,其中一個可以正常使用這段代碼進行操作,另外一個不行,原因都是2058uj5u.com熱心網友回復:
我也遇到了同樣的問題,請問這個問題你解決了嗎?能否賜教一下uj5u.com熱心網友回復:
我也遇到了同樣的問題。我使用的是兩個佇列管理器,每個佇列管理器中設定一個本地佇列,一個遠程佇列。佇列管理器之間使用默認的通道。監聽啟動的是一個埠。命令列 runmqsc 可以存訊息,取訊息。就是代碼連接之后,就報 2058的錯誤。頂一個轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/96984.html
標籤:一般軟件使用
