Просмотр, чтение и удаление сообщения из очереди с помощью классов IBM MQ
Я пишу простое приложение Java, используя классы MQ для Java с Eclipse.
прямо сейчас я могу просматривать удаленную очередь без удаления сохраненных сообщений.
Вот код цикла чтения:
MQQueueManager QMgr = new MQQueueManager(qManager); //<-- qManager is a String with the QMgr name
int openOptions = MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE;
MQQueue queue = QMgr.accessQueue(queueName, openOptions);
MQMessage theMessage = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options=MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_FIRST;
gmo.matchOptions=MQC.MQMO_NONE;
gmo.waitInterval=5000;
boolean thereAreMessages=true;
while(thereAreMessages){
try{
//read the message
queue.get(theMessage,gmo);
//print the text
String msgText = theMessage.readString(theMessage.getMessageLength());
System.out.println("msg text: "+msgText);
// <--- Solution code Here
//move cursor to the next message
gmo.options = MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_NEXT;
}catch(MQException e){
if(e.reasonCode == e.MQRC_NO_MSG_AVAILABLE) {
System.out.println("no more message available or retrived");
}
thereAreMessages=false;
} catch (IOException e) {
System.out.println("ERROR: "+e.getMessage());
}
}
главный вопрос: После строки прочитанного сообщения и перед перемещением курсора на следующее сообщение Как удалить сообщение из очереди?
второй вопрос: Эклисп предупреждает меня, что все костанты, используемые для опций, устарели; какие из них правильны для использования?
устранение:
вот решение я ищу:
// set te cursor to remove the message from the queue
gmo.options = CMQC.MQGMO_MSG_UNDER_CURSOR;
queue.get(theMessage, gmo);
эти строки должны быть вставлены в код вопроса
Я нашел его здесь: http://www.velocityreviews.com/forums/t124676-mq-series-messages-browse-and-delete.html
2 ответов
устранение:
вот решение, которое я действительно ищу:
// set te cursor to remove the message from the queue
gmo.options = CMQC.MQGMO_MSG_UNDER_CURSOR;
queue.get(theMessage, gmo);
эти строки должны быть вставлены в код вопроса
Я нашел его здесь: http://www.velocityreviews.com/forums/t124676-mq-series-messages-browse-and-delete.html
чтобы удалить сообщение, выполните процедуру, описанную в разделе документация MQ.
для устаревших значений констант проверьте еще раз Javadoc - это рекомендуемый способ описан.
MQC.MQOO_INPUT_SHARED --> CMQC.MQOO_INPUT_SHARED