Skip to content

Instantly share code, notes, and snippets.

@sachin-handiekar
Created November 18, 2014 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sachin-handiekar/c6e4166e278c88bf918b to your computer and use it in GitHub Desktop.
Save sachin-handiekar/c6e4166e278c88bf918b to your computer and use it in GitHub Desktop.
Oracle AQ Queue Browser
<beans ...>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="oracleAqConnFactory" />
<property name="defaultDestination" ref="destination" />
</bean>
</beans>
package com.sachinhandiekar.oracle.aq;
 
import java.util.Enumeration;
 
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.Session;
 
import oracle.jms.AQjmsAdtMessage;
import oracle.jms.AQjmsQueueBrowser;
import oracle.jms.AQjmsSession;
import oracle.sql.ORADataFactory;
import oracle.xdb.XMLType;
 
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.SessionCallback;
 
public class OracleAQQueueBrowser {
 
 private JmsTemplate jmsTemplate;
 
  public void browseMessages() {
 
  Integer count = (Integer) jmsTemplate.execute(new SessionCallback() {
   public Object doInJms(Session session) throws JMSException {
    int count = 0;
    Queue queue = (Queue) jmsTemplate.getDefaultDestination();
 
    QueueBrowser browser = ((AQjmsSession) session).createBrowser(queue, null, XMLType.getORADataFactory(),
      true);
 
    Enumeration messages = browser.getEnumeration();
 
    while (messages.hasMoreElements()) {
     count++;
     Message message = (Message) messages.nextElement();
     displayMessage(message);
    }
 
     return new Integer(count);
   }
 
   private void displayMessage(Message message) {
    try {
     XMLType xmlMsg = (XMLType) ((AQjmsAdtMessage) message).getAdtPayload();
     System.out.println("Message ==> " + xmlMsg.getStringVal());
     System.out.println();
    }
    catch (Exception e) {
     e.printStackTrace();
    }
   }
  }, true);
 
  System.out.println("Number of Messages : " + count);
 }
 
 public void setJmsTemplate(JmsTemplate jmsTemplate) {
  this.jmsTemplate = jmsTemplate;
 }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment