*
The moose likes EJB and other Java EE Technologies and the fly likes MessageListener in AQ JMS Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "MessageListener in AQ JMS" Watch "MessageListener in AQ JMS" New topic
Author

MessageListener in AQ JMS

bala.v reddy
Greenhorn

Joined: Sep 13, 2005
Posts: 4
Hi,

I am using AQ with JMS. when i run receiver with MessageListeners onMessage() method, it receives all messages which are already in Queue, but will not receive notification of any new messages that are enqueued at runtime.

here i am putting sample code

import javax.jms.*;
import oracle.jms.*;
public class SimpleQueueReceiver implements javax.jms.MessageListener
{
String queueName = null;
QueueConnectionFactory queueConnectionFactory = null;
QueueConnection queueConnection = null;
QueueSession queueSession = null;
Queue queue = null;
QueueReceiver queueReceiver = null;
ObjectMessage message = null;
Text1Listener queueListener = null;
SimpleQueueReceiversr =null;
SimpleQueueReceiver(int i)
{
try {
queueConnectionFactory = AQjmsFactory.getQueueConnectionFactory("scdb02.de.db.com", "bcsftp", 1521, "thin");
queueConnection = queueConnectionFactory.createQueueConnection("BCSFTP", "bcsftp");
queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue=((AQjmsSession)queueSession).createQueue("TEST1");
//queue=queueSession.getQueue("THILAK_TEST_QUEUE");
System.out.println("queue: "+queue);
queueReceiver = queueSession.createReceiver(queue);
//queueReceiver = queueSession.createConsumer(queue);
System.out.println("queueReceiver Object Create: ");
sr = new SimpleQueueReceiver();
queueSession.setMessageListener(sr);
queueConnection.start();
System.out.println("AFTER Invoking TextListener(): "+queueSession .getMessageListener());

} catch (Exception e) {
System.out.println("Exception occurred: " +
e.toString());
}

}
public static void main(String[] args) {

SimpleQueueReceiver sr = new SimpleQueueReceiver(1);
try{

synchronized(sr) {
while (true) {
try {
sr.wait();
} catch (InterruptedException ie) {ie.printStackTrace();}
}
}
//sr.closeQueueSession();

}catch(Exception e)
{
System.out.println(e.getMessage());

}

}
public void onMessage(Message message)
{
System.out.println("INSiDE Reading OnMessage(): " );
ObjectMessage msg = null;

try {
if (message instanceof ObjectMessage) {
msg = (ObjectMessage) message;
//System.out.println("Reading message: " + msg.getObject());
TestMessageType test=(TestMessageType)msg.getObject();
System.out.println("Reading message: You Got it ......" +test.getTestMessageType());
} else {
System.out.println("Message of wrong type: " +
message.getClass().getName());
}
//queueSession.commit();
} catch (JMSException e) {
System.out.println("JMSException in onMessage(): " +
e.toString());
}

}
}

Oracle version is 9.2.0.6

Please let me know what is the problem with AQ JMS and how to resolve this issue..
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: MessageListener in AQ JMS