Just came across this useful blog entry on flow control<http://blog.kovyrin.net/2009/01/23/activemq-tips-flow-control-and-stalled-producers-problem/>from Homo-Adminus <http://blog.kovyrin.net/> who had a similar experience. It is worth a read.
2009/4/2 Gary Tully <gary.tu...@gmail.com> > you are seeing producer flow control in > action<http://activemq.apache.org/producer-flow-control.html>. > The objective of producer flow control is to ensure that an entire > connection is not blocked when the memory limit of a destination is reached. > The broker and producer communicate to push back on the producer when the > memory limit is approaching. The memory limit defaults to 64m. > > If producer flow control is disabled, (see the policy entry in the link > above) once the queue memory limit is reached and system memory limit is > reached, a queues messages will be spooled to disk and the memory will be > released for more messages, which will in turn get spooled to disk. > > > 2009/4/2 sulong <sulong1...@gmail.com> > > Hi all,I am testing the activemq to learn how to use it. I write a simple >> single thread jms client to send 10000 messages, but it is blocked at the >> 5083rd message. I use: >> >> activemq 5.2 >> jvm 1.5 >> ubuntu 8.10 >> >> and the program is simple : >> >> >> public class Sender { >> public static void main(String[] args) { >> ConnectionFactory cf = new ActiveMQConnectionFactory("tcp:// >> 10.1.94.237:6000"); >> Connection conn = null; >> Session s = null; >> try { >> conn = cf.createConnection(); >> >> s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); >> s.run(); >> MessageProducer sender = >> s.createProducer(s.createQueue("jms_test")); >> for (int i = 0; i < 10000; i++) { >> TextMessage tm = s.createTextMessage(); >> tm.setText(String.valueOf(i)); >> sender.send(tm); >> } >> >> System.out.println("Done."); >> }catch (JMSException e) { >> e.printStackTrace(); >> } finally { >> if (conn != null) { >> try { >> conn.close(); >> } catch (Exception e) { >> e.printStackTrace(); >> } >> } >> >> if (s != null) { >> try { >> s.close(); >> } catch (Exception e) { >> e.printStackTrace(); >> } >> } >> } >> } >> } >> >> anyone knows why it is blocked? Thanks >> > > > > -- > http://blog.garytully.com > > Open Source SOA > http://FUSESource.com > -- http://blog.garytully.com Open Source SOA http://FUSESource.com