Я пытаюсь получить сообщение из очереди MQ. Ниже приведен код, я использую:Не удалось получить сообщение из очереди MQ
//Fetching Queue details
MQEnvironment.hostname=getMqCall().getMqHost();
MQEnvironment.channel=getMqCall().getMqChannel();
MQEnvironment.port=getMqCall().getMqPort();
MQQueueManager qMgr= new MQQueueManager(getMqCall().getMqQueManager());
MQQueue outputQueue = qMgr.accessQueue(getMqCall().getRespQueue(), MQC.MQOO_INQUIRE | MQC.MQOO_BROWSE | MQC.MQOO_INPUT_AS_Q_DEF);
//Checking for messages in queue
int i=outputQueue.getCurrentDepth();
System.out.println("Number of messages in Assign promo queue:: "+i);
for(int j=0;j<i;j++){
MQMessage sampleResponse = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
outputQueue.get(sampleResponse, gmo);
String msgtext = sampleResponse.readStringOfCharLength(sampleResponse.getMessageLength());
System.out.println("Message read is: "+msgtext);
System.out.println("Response length: "+sampleResponse.getTotalMessageLength());
if(msgtext!=null){
// Some code
}else{
System.out.println("Message not read from response queue");
}
}
//Checking for messages in queue after processing
i=outputQueue.getCurrentDepth();
System.out.println("Number of messages in queue after processing :: "+i);
outputQueue.close();
qMgr.close();
qMgr.disconnect();
Я получаю msgtext значение как нуль, даже если getCurrentDepth()
показывает мне, что значения присутствуют в очереди. Даже getTotalMessageLength()
возвращает значение null
. Подтвердили, что сообщения присутствуют в этой очереди.
Раньше я использовал readString()
метод вместо readStringOfCharLength()
. Тем не менее, я все еще не получал ответа, поэтому я проверил с readStringOfCharLength()
, поскольку метод readString()
устарел.
Я даже попытался использовать метод readLine()
, но все еще не смог получить сообщение.
Заранее спасибо.
PS: Я запускаю вышеуказанный фрагмент кода через планировщик, который запускается каждые 15 минут.
Как же нет проверки для кодов возврата MQ? Существует несколько причин для поведения, которое вы видите, но без кодов возврата все, что мы можем сделать, - это делать дикие догадки. Что происходит, когда вы пытаетесь просмотреть очередь, используя пример кода? –