You don't describe how messages get on the queue - could something
else have published since your queue browser was created?
On 1/19/07, pcasar <[EMAIL PROTECTED]> wrote:
Hi,
Using tansacted session I sent ONE message to a queue, then I receive from
the same queue and I get the sent message. After the first receive I create
a queue browser that tell me that my queue is empty, but if I try to receive
once more on the same queue the result is not null!! Why? The queue was
empty!
Here the code of my test:
---------------------------------
public void testMid2Simple() throws JMSException, NotSupportedException,
SystemException, RollbackException, HeuristicRollbackException,
HeuristicMixedException, NamingException {
Context ctx = new InitialContext();
Queue q = (Queue)ctx.lookup("MyQueue");
///// SEND MESSAGE //////
QueueConnectionFactory factory =
(QueueConnectionFactory)ctx.lookup("queueConnectionFactory");
QueueConnection mqConn = factory.createQueueConnection();
mqConn.start();
QueueSession mqQSess = mqConn.createQueueSession(true, 0);
// do stuff
QueueSender qs = mqQSess.createSender(q);
Message m = mqQSess.createTextMessage("Hello!");
qs.send(m);
mqQSess.commit();
mqConn.close();
///// RECEIVE MESSAGE //////
mqConn = factory.createQueueConnection();
mqQSess = mqConn.createQueueSession(true, 0);
QueueReceiver qr = mqQSess.createReceiver(q);
mqConn.start();
m = qr.receive(2000);
if (m == null) {
fail();
}
mqQSess.commit();
mqConn.close();
///// BROWSE QUEUE /////
mqConn = factory.createQueueConnection();
mqQSess = mqConn.createQueueSession(true,
Session.AUTO_ACKNOWLEDGE);
QueueBrowser qb = mqQSess.createBrowser(q);
if (qb.getEnumeration().hasMoreElements()) {
for (Enumeration e = qb.getEnumeration();
e.hasMoreElements();) {
Message ith = (Message)e.nextElement();
ith.getJMSMessageID();
}
fail();
}
mqQSess.commit();
mqConn.close();
///// RE-RECEIVE MESSAGE //////
mqConn = factory.createQueueConnection();
mqQSess = mqConn.createQueueSession(true,
Session.AUTO_ACKNOWLEDGE);
qr = mqQSess.createReceiver(q);
mqConn.start();
m = qr.receive(2000);
if (m != null) {
fail(); ///FAILS HERE
}
mqQSess.commit();
mqConn.close();
}
-----------------------------
TIA,
Paolo.
--
View this message in context:
http://www.nabble.com/Receive-forever-in-transacted-session-tf3039151.html#a8446747
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
--
James
-------
http://radio.weblogs.com/0112098/