diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java index 621c466b02..55e270023f 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java @@ -547,14 +547,16 @@ public abstract class PrefetchSubscription extends AbstractSubscription { // Synchronized to DispatchLock synchronized(dispatchLock) { + ArrayList references = new ArrayList(); for (MessageReference r : dispatched) { if( r.getRegionDestination() == destination) { - rc.add(r); + references.add(r); } } - destination.getDestinationStatistics().getDispatched().subtract(dispatched.size()); - destination.getDestinationStatistics().getInflight().subtract(dispatched.size()); - dispatched.clear(); + rc.addAll(references); + destination.getDestinationStatistics().getDispatched().subtract(references.size()); + destination.getDestinationStatistics().getInflight().subtract(references.size()); + dispatched.removeAll(references); } } return rc; diff --git a/activemq-spring/src/test/java/org/apache/activemq/spring/ListenerTest.java b/activemq-spring/src/test/java/org/apache/activemq/spring/ListenerTest.java index 155942c767..57b10618c8 100644 --- a/activemq-spring/src/test/java/org/apache/activemq/spring/ListenerTest.java +++ b/activemq-spring/src/test/java/org/apache/activemq/spring/ListenerTest.java @@ -51,7 +51,7 @@ public class ListenerTest { Thread.sleep(3000); LOG.info("messages received= " + listener.messages.size()); - Assert.assertEquals(listener.messages.size(), msgNum); + Assert.assertEquals(msgNum, listener.messages.size()); } @@ -63,7 +63,7 @@ public class ListenerTest { Thread.sleep(3000); LOG.info("messages received= " + listener.messages.size()); - Assert.assertEquals(listener.messages.size(), 6 * msgNum); + Assert.assertEquals(6 * msgNum, listener.messages.size()); } public void sendMessages(String destName, int msgNum) throws Exception { diff --git a/activemq-spring/src/test/resources/spring/spring.xml b/activemq-spring/src/test/resources/spring/spring.xml index 03188b7fc3..9291a5a066 100644 --- a/activemq-spring/src/test/resources/spring/spring.xml +++ b/activemq-spring/src/test/resources/spring/spring.xml @@ -58,9 +58,8 @@ - + - \ No newline at end of file