Hi Clark, In this scenario, there's no specific requirements about when the messages should be in the queue; because the consumer code is executed every several minutes. The queue connection, session, consumer will be re-initialized. As long as it's able to retrieve messages from the queue, it's considered to be working. But the problem is that sometimes consumer fails to retrieve all the messages; after that, no more messages can be retrieved from the queue, even after connection is re-established. I'll check the javadoc quote again to see if there's anything helpful. Thank you for your help!
Yelei cobrien wrote: > > Yelei, > This scenario requires the consumer to consume messages that were on the > queue before the consumer started listening correct? If this is the case > please read the javadoc quote in my previous response. > > Clark > > > www.ttmsolutions.com > ActiveMQ reference guide at > http://bit.ly/AMQRefGuide > > > > > > > WuKo wrote: >> >> Hello Alexandre, >> >> Thanks for your reply. >> You are right that that the consumer code will stop receiving messages >> after it gets a timeout. >> >> The scenario in my environment is: >> 1. we have a scheduler on one of our SOA platforms, which triggers the >> consumer code every 5 minutes and gets a certain amount of messages from >> the queue. >> 2. Everytime the consumer code is triggered, the connection will be >> started again, and the consumer will be created again, as shown in the >> code. >> >> The problem is: >> 1. We have 12 messages in the queue; >> 2. Everytime we read 5 messages from the queue. >> 3. The first time, we got 5 messages from the queue without any problem. >> 4. The second time, we got only 4 messages with the consumer code. >> 5. 3 messages remain in the queue and are not able to get retrieved. >> 6. We kill the client connection, and try retrieving messages again. It >> didn't work. >> 7. We restarted ActiveMQ, and use the same code to get messages. It >> started working. >> >> Sometimes we retrieve 12 messages from the queue by reading 5 messages 3 >> times; and then we add a few messages to queue, and do the retrieval >> again, it still works with the consumer code. >> >> Is there any configuration I need to do to make it always work? Currently >> this problem occurs every day. >> I think some port from the server side was blocked for some reason; maybe >> it's due to my implementation, and I didn't have experience with ActiveMQ >> before. >> >> Thanks. >> >> Yelei >> >> >> >> >> Alexandre Léveillé wrote: >>> >>> Hi Yelei, >>> >>> As I see it, your loop will read a few messages. Then, the queue will be >>> empty and your loop will go in the Else branch of your If. The break >>> statement will then break your loop as Clark said, thus effectively you >>> will >>> stop receiving messages. >>> >>> Hope that helps, >>> Alexandre >>> >>> >>> On Fri, Jul 2, 2010 at 06:58, savagre <sava...@gmail.com> wrote: >>> >>>> >>>> Hello Clark, >>>> >>>> Thanks a lot for your reply. >>>> I understand that the 'receive' method only retrieves the message >>>> within >>>> the >>>> interval defined by the wait time. But the messages in the queue is >>>> really >>>> small, like 5 or 6 lines of text; and I already increased the wait time >>>> to >>>> 10 seconds (10000). When the code works, it's able to read exactly the >>>> same >>>> message within miliseconds. >>>> The only way I found to get it resolved is to restart the ActiveMQ >>>> server; >>>> and then the same code is able to pick up messages again. >>>> Do you know what could be the problem here? >>>> >>>> Yelei >>>> >>>> >>>> >>>> cobrien wrote: >>>> > >>>> > Yelei >>>> > If DEFAULTWAITTIME expires then you will break out of your loop and >>>> not >>>> > receive any messages unless you restart. >>>> > >>>> > The link below has an example of implementing a Consumer. >>>> > >>>> http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html >>>> > >>>> > >>>> > Clark >>>> > PS >>>> > Note that the JMS API JavaDoc for the API 'receive' method says >>>> > "Receives the next message that arrives within the specified timeout >>>> > interval." >>>> > >>>> > www.ttmsolutions.com >>>> > ActiveMQ reference guide at >>>> > http://bit.ly/AMQRefGuide >>>> > >>>> > >>>> > >>>> > savagre wrote: >>>> >> >>>> >> Hello guys, >>>> >> >>>> >> I've got a strange problem related to reading multiple messages from >>>> the >>>> >> queue. >>>> >> I have the following java logic to retrieve multiple messages >>>> defined by >>>> >> variable "numberOfMessages": >>>> >> >>>> >> Connection qConn=qFactory.createConnection(); >>>> >> qConn.start(); >>>> >> Session qSession=qConn.createSession(false, >>>> >> QueueSession.AUTO_ACKNOWLEDGE); >>>> >> Destination queue=qSession.createQueue(qName); >>>> >> MessageConsumer qReader=qSession.createConsumer(queue); >>>> >> TextMessage qMessage=null; >>>> >> for(i=1;i<=numberOfMessages;++i){ >>>> >> qMessage=(TextMessage)qReader.receive(DEFAULTWAITTIME); >>>> >> if(qMessage!=null){ >>>> >> // add qMessage to some storage >>>> >> }else{ >>>> >> break; >>>> >> } >>>> >> } >>>> >> qReader.close(); >>>> >> qSession.close(); >>>> >> qConn.close(); >>>> >> >>>> >> It works for a while; after that the logic is not able to retrieve >>>> any >>>> >> text message from the queue. >>>> >> The queue is not empty, but the qReader always returns null value, >>>> even >>>> >> after I increased reading timeout. >>>> >> If I restart ActiveMQ server, the above piece of code would work >>>> again. >>>> >> Is there anybody who knows what happened to the code? Do I need to >>>> close >>>> >> the MessageConsumer everytime I get a message? >>>> >> Thanks. >>>> >> >>>> >> Yelei >>>> >> >>>> >> >>>> > >>>> > >>>> >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/problem-related-to-reading-multiple-messages-from-the-queue-tp29045640p29055019.html >>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>>> >>>> >>> >>> >>> -- >>> Visitez ma page du Cyclo-défi contre le cancer : >>> www.alexandreleveille.ca >>> >>> >> >> > > -- View this message in context: http://old.nabble.com/problem-related-to-reading-multiple-messages-from-the-queue-tp29045640p29082740.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.