You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2015/08/28 23:35:27 UTC

qpid-jms git commit: QPIDJMS-51 For the case where browser prefetch is zero we can default to the default consumer pull implementation.

Repository: qpid-jms
Updated Branches:
  refs/heads/master e1b9b2a8f -> dc75f4646


QPIDJMS-51 For the case where browser prefetch is zero we can default to
the default consumer pull implementation.

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/dc75f464
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/dc75f464
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/dc75f464

Branch: refs/heads/master
Commit: dc75f4646f87ef11bcfd25730315c03ddff9a649
Parents: e1b9b2a
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Aug 28 17:31:31 2015 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Aug 28 17:31:31 2015 -0400

----------------------------------------------------------------------
 .../jms/provider/amqp/AmqpQueueBrowser.java     |  7 +++++
 .../qpid/jms/consumer/JmsQueueBrowserTest.java  | 31 ++++++++++++++++++++
 2 files changed, 38 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dc75f464/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpQueueBrowser.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpQueueBrowser.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpQueueBrowser.java
index 3a28e39..7f191a6 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpQueueBrowser.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpQueueBrowser.java
@@ -36,6 +36,13 @@ public class AmqpQueueBrowser extends AmqpConsumer {
 
     @Override
     public void pull(final long timeout) {
+
+        // Zero prefetch QueueBrowser behaves the same as a standard pull consumer.
+        if (resource.getPrefetchSize() == 0) {
+            super.pull(timeout);
+            return;
+        }
+
         LOG.trace("Pull on browser {} with timeout = {}", getConsumerId(), timeout);
 
         // Pull for browser is called when there are no available messages buffered.

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dc75f464/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
index 1423c81..b6c7c9e 100644
--- a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
+++ b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
@@ -138,6 +138,37 @@ public class JmsQueueBrowserTest extends AmqpTestSupport {
     }
 
     @Test(timeout = 60000)
+    public void testBrowseAllInQueueZeroPrefetch() throws Exception {
+        connection = createAmqpConnection();
+
+        JmsConnection jmsConnection = (JmsConnection) connection;
+        jmsConnection.getPrefetchPolicy().setQueueBrowserPrefetch(0);
+
+        connection.start();
+
+        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        assertNotNull(session);
+        Queue queue = session.createQueue(getDestinationName());
+        sendToAmqQueue(5);
+
+        QueueViewMBean proxy = getProxyToQueue(getDestinationName());
+        assertEquals(5, proxy.getQueueSize());
+
+        QueueBrowser browser = session.createBrowser(queue);
+        assertNotNull(browser);
+        Enumeration enumeration = browser.getEnumeration();
+        int count = 0;
+        while (enumeration.hasMoreElements()) {
+            Message msg = (Message) enumeration.nextElement();
+            assertNotNull(msg);
+            LOG.debug("Recv: {}", msg);
+            count++;
+        }
+        assertFalse(enumeration.hasMoreElements());
+        assertEquals(5, count);
+    }
+
+    @Test(timeout = 60000)
     public void testBrowseAllInQueueTxSession() throws Exception {
         connection = createAmqpConnection();
         connection.start();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org