Как удалить определенное сообщение из очереди JMS

 
 
 
Сообщения:175
Есть задача: есть сервелет который записывает в одну очередь сообщение и ждет ответа из другой. Соответственно так как обращений к сервелету может быть много, он должен дождаться во второй очереди ответа именно себе и пульнуть это в ответ. Соответственно так как стандартно читать сообщения из очереди нельзя я использую такой механизм:

Enumeration messageEnumeration;
    ObjectMessage objectMessage;

    JMSContext jmsContext = mConnectionFactory.createContext();
    QueueBrowser browser = jmsContext.createBrowser(mQueue);

    try {
        messageEnumeration = browser.getEnumeration();
        mSc.log("start browser");
        if (messageEnumeration != null){
            mSc.log("messageEnumeration is not null ");
            if (!messageEnumeration.hasMoreElements()){
                response.getWriter().append("there are no messages in the queue\n");
            } else { 
                while (messageEnumeration.hasMoreElements()){
                    mSc.log("into while");
                    Payment payment = new Payment();
                    objectMessage = (ObjectMessage) messageEnumeration.nextElement();
                    payment = (Payment) objectMessage.getObject();
                    response.getWriter().append(payment.getAcc() + " - " + payment.getNameClient() + " - " + payment.getSumma() + " " + payment.getCur()).append("\n");
                    if (payment.getAcc().equals("54321")){
                        // вот здесь надо удалить сообщение
                    }
                }
            } 
        }
    } catch (JMSException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


Собственно вопрос, как удалить сообщение которое соответствует какому либо критерию?

//wbr
 
 
Сообщения:158
Скорее всего, Вам надо смотреть в сторону JMS Message Selectors.
 
Модераторы:wedens
Сейчас эту тему просматривают:Нет