Jul 10th, 2008, 12:33 PM
JmsTemplate receive() returns null
I tried to use JmsTemplate's receive() method for synchronous consumption of a Queue, but the method returns 'null', even when there are messages in the queue.
First, I tried using JmsTemplate with 2 second time out, and I was able to consume all messages without a problem. But when I tested this repeatedly, I found out that sometimes, at certain points, JmsTemplate is not able to consume messages from the queue, and returns null (timeout), even when there are messages in the Queue (I checked through JMX).
Then I tried using RECEIVE_TIMEOUT_INDEFINITE_WAIT, and with that, I was able to consume about 7,8 messages (out of 50) and again, it fails returning null. Then I tried out with NO_WAIT and this time, I was only able to consume first message. It fails returning nulls.
I tried this with CachingConnectionFactory / SingleConnectionFactory and also with direct JMS ConnectionFactory. But the result is same. The application consumes several messages, and then starts to return null, while there are messages left in queue.
I am using Spring 2.5.5 with ActiveMQ 5.1.
Any suggestions, help is deeply appreciated.
Tags for this Thread