Hi Alexandre, Thanks for your information. I think the configuration would be the cause of the problem.
Here's the connector configuration from activemq.xml: <transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/> </transportConnectors> This part remains unchanged from default configuration. The activemq is hosted on server ws293.soadev.local Here's the configuration of jndi: java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory java.naming.provider.url = tcp://ws293.soadev.local:61616 ConnectionFactory = QueueConnectionFactory queue.OrderCreationQueue = OrderCreation In my case, should I change my jndi properties? Yelei Alexandre Léveillé wrote: > > Hi Yelei, > > If you think that your configuration may be the problem, please post your > [activemq_install_dir]/conf/activemq.xml and > [java_home]/lib/jndi.properties > files. > > > For instance, in activemq.xml you can set the broker to create the > transport > connectors of your choice: > > <transportConnectors> > <transportConnector name="ssl" uri="ssl://0.0.0.0:61617" /> > <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/> > </transportConnectors> > > > And then use the jndi.properties file so that the ActiveMQInitialContext > connects to your broker, using a specific local port. > > java.naming.provider.url = ssl://10.8.76.24:61617/localhost:60606 > > > This is the kind of configuration I use, because I can only open specific > ports on both the client and the server. (In this example, the server is > listening on ssl://0.0.0.0:61617 and the client will connect through his > local port 60606) > > Alexandre > > > On Fri, Jul 2, 2010 at 09:26, WuKo <sava...@gmail.com> 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-tp29045640p29056361.html >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> > > -- View this message in context: http://old.nabble.com/problem-related-to-reading-multiple-messages-from-the-queue-tp29045640p29057259.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.