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

Reply via email to