Sorry, it works as expected in both scenarios.
nmurar01 wrote: > > The following entry in my activemq.xml doesn’t seem to work. > > <destinationPolicy> > > <policyMap> > > <policyEntries> > > <policyEntry topic=">" producerFlowControl="true" > memoryLimit="1mb" usePrefetchExtension="false"> > > <pendingSubscriberPolicy> > > <vmCursor /> > > </pendingSubscriberPolicy> > > </policyEntry> > > <policyEntry queue=">" producerFlowControl="true" > memoryLimit="1mb" usePrefetchExtension="false"> > > <!-- Use VM cursor for better latency > > For more information, see: > > > > http://activemq.apache.org/message-cursors.html > > > > <pendingQueuePolicy> > > <vmQueueCursor/> > > </pendingQueuePolicy> > > --> > > </policyEntry> > > </policyEntries> > > </policyMap> > > </destinationPolicy> > > > However, this works fine while running a jUnit Test. > > BrokerService broker = new BrokerService(); > > broker.setBrokerName("fast"); > > > broker.getSystemUsage().getMemoryUsage().setLimit(64*1024*1024); > > //Set the Destination policies > > PolicyEntry policy = new PolicyEntry(); > > //set a memory limit of 4mb for each destination > > policy.setMemoryLimit(4 * 1024 *1024); > > policy.setUsePrefetchExtension(false); > > //disable flow control > > policy.setProducerFlowControl(false); > > PolicyMap pMap = new PolicyMap(); > > //configure the policy > > pMap.setDefaultEntry(policy); > > broker.setDestinationPolicy(pMap); > > broker.addConnector("tcp://localhost:61618"); > > broker.start(); > > Gary Tully wrote: >> >> On trunk, a 5.4-SNAPSHOT, you can disable the prefetchExtension (via a >> destination policy, usePrefetchExtension=false) that is responsible >> for allowing the buffer to be refilled when a message is delivered. >> The consumer send a deliveredAck to the broker to let it know that it >> can send more messages in the normal case. >> >> Also note that CLIENT_ACK mode will ack all messages received at that >> point, not just the current message. You need to use INDIVIDUAL_ACK if >> you want to deal with each message individually. >> >> On 29 July 2010 04:28, nmurar01 <nm1...@gmail.com> wrote: >>> >>> >>> We are using worker threads to process messages. So, onMessage() calls >>> simply return by delegating the processing to the worker thread. Once >>> the >>> worker thread processes the message, worker thread calls >>> message.acknowledge(). So, if I set a prefetch buffer of 10, and 9 >>> messages >>> are getting processed now and 1 finished processing and sent an >>> acknowledge(), I would expect only 1 message to show up in my prefetch >>> buffer. But, the prefetch buffer gets filled with next message as soon >>> as >>> onMessage() completes, not when message.acknowledge() happens. Why is >>> that??? I tried setting ackMode in CLIENT_ACKNOWLEDGE, >>> INDIVIDUAL_ACKNOWLEDGE. I even tried session.commit(). Nothing seems to >>> stop >>> filling up prefetch buffer. Any Ideas??? We don't want to avoid using >>> receive() or adding multiple consumers by setting prefetchLimit of 1. >>> -- >>> View this message in context: >>> http://old.nabble.com/prefetch-buffer-along-with-acknowledgement-mode-tp29292780p29292780.html >>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>> >>> >> >> >> >> -- >> http://blog.garytully.com >> >> Open Source Integration >> http://fusesource.com >> >> > > -- View this message in context: http://old.nabble.com/prefetch-buffer-along-with-acknowledgement-mode-tp29292780p29297761.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.