Я использую простой Java-клиент для подключения к удаленной очереди MQ.
Когда я запускаю код Java для чтения и записи сообщений с именем очереди Alias, он работает нормально.
Когда я пытаюсь запустить код в той же очереди, но с физическим именем очереди (потому что я хочу вызвать getQueueDepth), я получаю ошибку 2035 в тот момент, когда код пытается установить соединение
Полномочия в очереди:
browse + dsp + get + inq + put + set + setall
Java-код как под
import com.ibm.mq.MQC;
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
открытый класс MQSniffer {
/**
* @param args
*/
/**
* @param args
*/
public static void main(String[] args) {
String hostname = "XXXX";
String channel = "CHANNEL";
String qManager = "qmgr";
MQQueueManager qMgr;
MQEnvironment.hostname = hostname;
MQEnvironment.channel = channel;
MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES);
try {
qMgr = new MQQueueManager(qManager);
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE | MQC.MQOO_OUTPUT ;
MQQueue system_default_local_queue =
qMgr.accessQueue("PHYSICAL_QUEUE_NAME", // *****Get an exception on this call*****
openOptions,
null,
null,
null);
System.out.println("****Current Depth is "+ system_default_local_queue.getCurrentDepth());
MQMessage hello_world = new MQMessage();
hello_world.writeUTF("Hello World!");
MQPutMessageOptions pmo = new MQPutMessageOptions();
system_default_local_queue.put(hello_world,pmo);
System.out.println("Put the message");
system_default_local_queue.close();
// Disconnect from the queue manager
qMgr.disconnect();
}
catch (MQException ex)
{
System.out.println("An MQSeries error occurred : Completion code " +
ex.completionCode +
" Reason code " + ex.reasonCode);
ex.printStackTrace();
}
catch (java.io.IOException ex)
{
System.out.println("An error occurred whilst writing to the message buffer: " + ex);
}
}
}
om.ibm.mq.MQException: MQJE001: код завершения 2, причина 2035
в com.ibm.mq.MQQueueManager.accessQueue (MQQueueManager.java:2858)
в org.ku.benchmarkos.MQSniffer.main (MQSniffer.java)
Любая помощь приветствуется!
Спасибо
J