Я запускаю простой Java-клиент для подключения к удаленной очереди MQ.
Когда я запускаю код Java для чтения сообщений записи с именем очереди псевдонима, он работает нормально.
Когда я пытаюсь запустить код в той же очереди, но с именем физической очереди (поскольку я хочу вызвать getQueueDepth), я получаю ошибку 2035 в момент, когда код пытается установить соединение
Права доступа к очереди: просмотреть +dsp +get +inq +put +set +setall
Java-код, как показано ниже
импортировать com.ibm.mq.MQC; импортировать com.ibm.mq.MQEnvironment; импортировать com.ibm.mq.MQException; импортировать com.ibm.mq.MQGetMessageOptions; импортировать com.ibm.mq.MQMessage; импортировать com.ibm.mq.MQPutMessageOptions; импортировать com.ibm.mq.MQQueue; импортировать 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