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. >