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

Reply via email to