0

I have a distributed queue on Weblogic. Messages are read from the queue using JMS onMessage() function. However the messages are not purged from the queue as long as the deployment is running. The message state string is always 'receive'. How do we ensure that the message is not picked up again in case a restart of the deployment is done?

  @Override
public void onMessage(Message msg) {
    try {
        String msgText;
        if (msg instanceof TextMessage) {
            msgText = ((TextMessage) msg).getText();
        } else {
            msgText = msg.toString();
        }

       System.out.println("Message Received from Message_RESPONSE_QUEUE: " + msgText + " - " + count++);

        // now send the message to queue2
        InitialContext ic2 = getInitialContext2();
        getMsgFromQueue qs = new getMsgFromQueue();
        qs.init2(ic2, QUEUE2);
        qs.send(msg, null);

    } catch (JMSException jmse) {
    } catch (NamingException ex) {
        Logger.getLogger(getMsgFromQueue.class.getName()).log(Level.SEVERE, null, ex);
    }
}
ukuta
  • 371
  • 2
  • 4
  • 14

1 Answers1

0

The message from the JMS queue does not get removed until JMS server receives an acknowledgement.

Here's some references that you may find useful -

http://docs.oracle.com/cd/E17904_01/web.1111/e15493/prog_details.htm#i1156227

http://docs.oracle.com/cd/E17904_01/web.1111/e15493/prog_details.htm#i1152248

http://docs.oracle.com/cd/E17904_01/web.1111/e15493/prog_details.htm#i1156227

SridharS
  • 893
  • 4
  • 8