We retry our testcase with the following lines in "activemq.xml" file to
disable "flow control":

<destinationPolicy>
      <policyMap>
        <policyEntries>

          <policyEntry topic="FOO.>" producerFlowControl="false"
memoryLimit="1mb">
            <dispatchPolicy>
              <strictOrderDispatchPolicy/>
            </dispatchPolicy>
            <subscriptionRecoveryPolicy>
              <lastImageSubscriptionRecoveryPolicy/>
            </subscriptionRecoveryPolicy>
          </policyEntry>

        </policyEntries>
      </policyMap>
</destinationPolicy>

but it doesn't seem to solve the problem: ActiveMQ still freezes after some
messages...



Olivier Bigard wrote:
> 
> Ok, we will try to disable this flow control.
> 
> Thank you
> 
> 
> rajdavies wrote:
>> 
>> It looks like you've hit flow control - you might want to disable it -  
>> see here: http://activemq.apache.org/producer-flow-control.html
>> cheers,
>> 
>> Rob
>> 
>> On Jan 18, 2008, at 6:59 AM, Olivier Bigard wrote:
>> 
>>>
>>> Hello,
>>>
>>> We had the same problem with ActiveMQ 5.0.0.
>>> Yesterday we downloaded the last 5.1 SNAPSHOT and the message  
>>> disappeared,
>>> but ActiveMQ is still frozen after some messages...
>>> I put a message in the forum with our Java code.
>>> We are running ActiveMQ on Solaris platform with JDK 1.5.0_07.
>>>
>>> Can anyone help us?
>>> Thank you
>>>
>>>
>>>
>>> Juergen.Schumacher wrote:
>>>>
>>>> Hello,
>>>>
>>>> ok, attaching the source code file does apparently not work here.
>>>> So here are the relevant code parts from the producer and processor
>>>> classes,
>>>> which create the connections to ActiveMQ and the messages.
>>>>
>>>> Sorry for the trouble...
>>>>
>>>> Regards,
>>>> Jürgen Schumacher
>>>>
>>>> ----------------
>>>> Procucer.java
>>>>
>>>>  private void initializeBrokerConnection() throws JMSException {
>>>>    LOG.info("Connecting to " + brokerUrl);
>>>>    ActiveMQConnectionFactory connectionFactory =
>>>>      new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
>>>> ActiveMQConnection.DEFAULT_PASSWORD, brokerUrl);
>>>>    connection = connectionFactory.createQueueConnection();
>>>>    connection.start();
>>>>    session = connection.createQueueSession(true,
>>>> Session.CLIENT_ACKNOWLEDGE);
>>>>    destination = session.createQueue("queue1");
>>>>    producer = session.createProducer(destination);
>>>>    producer.setDeliveryMode(DeliveryMode.PERSISTENT);
>>>>  }
>>>>
>>>>  private void startIteration() throws Exception {
>>>>    for (int i = 0; i < numberOfMessages; i++) {
>>>>      LOG.info("Creating message " + i);
>>>>      TextMessage message = session.createTextMessage("Message #" +  
>>>> i);
>>>>      LOG.info("Sending message " + i);
>>>>      producer.send(message);
>>>>      session.commit();
>>>>      producedCount++;
>>>>      LOG.info("Produced " + producedCount + " messages.");
>>>>    }
>>>>  }
>>>>
>>>> ---------------
>>>> Processor.java
>>>>
>>>>  private void initializeBrokerConnection() throws JMSException {
>>>>    LOG.info("Connecting to " + brokerUrl);
>>>>    ActiveMQConnectionFactory connectionFactory =
>>>>      new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
>>>> ActiveMQConnection.DEFAULT_PASSWORD, brokerUrl);
>>>>    sourceConnection = connectionFactory.createQueueConnection();
>>>>    destinationConnection = connectionFactory.createQueueConnection();
>>>>    sourceConnection.start();
>>>>    destinationConnection.start();
>>>>    sourceSession = sourceConnection.createQueueSession(true,
>>>> Session.CLIENT_ACKNOWLEDGE);
>>>>    destinationSession =  
>>>> destinationConnection.createQueueSession(true,
>>>> Session.CLIENT_ACKNOWLEDGE);
>>>>    source = sourceSession.createQueue("queue1");
>>>>    consumer = sourceSession.createConsumer(source);
>>>>    destination = destinationSession.createQueue("queue2");
>>>>    producer = destinationSession.createProducer(destination);
>>>>    producer.setDeliveryMode(DeliveryMode.PERSISTENT);
>>>>  }
>>>>
>>>>  public void onMessage(Message message) {
>>>>    if (message instanceof TextMessage) {
>>>>      try {
>>>>        String id = ((TextMessage) message).getText();
>>>>        LOG.info("Processing id = " + id);
>>>>        MapMessage map = destinationSession.createMapMessage();
>>>>        map.setString("id", id);
>>>>        map.setString("text", messageText);
>>>>        LOG.info("Send message");
>>>>        producer.send(map);
>>>>        LOG.info("Acknowledge message");
>>>>        message.acknowledge();
>>>>        LOG.info("Commit source");
>>>>        sourceSession.commit();
>>>>        LOG.info("Commit destination");
>>>>        destinationSession.commit();
>>>>        producedCount++;
>>>>        LOG.info("Produced " + producedCount + " messages.");
>>>>      } catch (Exception ex) {
>>>>        LOG.error("Error during processing", ex);
>>>>      }
>>>>
>>>>    }
>>>>  }
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/High-message-frequency-causes-ActiveMQ-to-freeze-tp14919292s2354p14947393.html
>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/High-message-frequency-causes-ActiveMQ-to-freeze-tp14919292s2354p14949383.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to