MQMessage читать или удалять - PullRequest
1 голос
/ 30 января 2012

у нас есть сервер WebSphere MQ. Я написал клиентскую утилиту Java, которая может читать все сообщения (оставляя их в очереди) или удалять все из очереди. Но возможно ли прочитать сообщение, и если оно содержит определенную строку - удалить его?

Чтобы прочитать сообщение очереди, которое я использую (сообщение останется в очереди на сервере для дальнейшей обработки, утилита coz только для тестирования):

MQQueue queue = queueManager.accessQueue(queueName, MQC.MQ00_BROWSE | MQC.MQ00_INPUT_SHARED);
MQGetMessageOptions options = new MQGetMessageOptions();
options.options = MQC.MQ00_BROWSE_FIRST | MQC.MQ00_INPUT_SHARED;
while(true) {
MQMessage msg = new MQMessage();
queue.get(msg, options);
if (msg.getTotalMeesageLength() == 0) {
break;
} else {
readMessage(msg);
}

1 Ответ

3 голосов
/ 30 января 2012

Это на самом деле довольно распространенное требование. Методология заключается в том, чтобы просматривать сообщения в поисках того, которое вы хотите удалить. Когда вы найдете это, удалите его с разрушительным GET. Вы можете GET сообщение, используя курсор просмотра, как описано в Инфоцентре здесь . Вы также можете использовать отдельный поток с его собственным дескриптором очереди для GET, используя MsgID, полученный из обзора. Просто вызовите другой поток и передайте его MsgID. Самый простой способ - использовать один поток и курсор обзора.

...