You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2017/06/13 13:26:34 UTC

activemq git commit: [AMQ-6702] add maxProducersToAudit and maxAuditDepth to dead letter strategy to cofigure the audit, fix and test

Repository: activemq
Updated Branches:
  refs/heads/master a1e595c18 -> b6cb0eace


[AMQ-6702] add maxProducersToAudit and maxAuditDepth to dead letter strategy to cofigure the audit, fix and test


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

Branch: refs/heads/master
Commit: b6cb0eacea632239fa6bf3a6c66ba1570c3c9af7
Parents: a1e595c
Author: gtully <ga...@gmail.com>
Authored: Tue Jun 13 14:26:15 2017 +0100
Committer: gtully <ga...@gmail.com>
Committed: Tue Jun 13 14:26:15 2017 +0100

----------------------------------------------------------------------
 .../policy/AbstractDeadLetterStrategy.java      | 17 ++++++++
 .../broker/policy/DeadLetterExpiryTest.java     | 43 ++++++++++++++++++++
 2 files changed, 60 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/b6cb0eac/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbstractDeadLetterStrategy.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbstractDeadLetterStrategy.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbstractDeadLetterStrategy.java
index ed376b7..fa6532b 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbstractDeadLetterStrategy.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbstractDeadLetterStrategy.java
@@ -107,4 +107,21 @@ public abstract class AbstractDeadLetterStrategy implements DeadLetterStrategy {
     public void setExpiration(long expiration) {
         this.expiration = expiration;
     }
+
+    public int getMaxProducersToAudit() {
+        return messageAudit.getMaximumNumberOfProducersToTrack();
+    }
+
+    public void setMaxProducersToAudit(int maxProducersToAudit) {
+        messageAudit.setMaximumNumberOfProducersToTrack(maxProducersToAudit);
+    }
+
+    public void setMaxAuditDepth(int maxAuditDepth) {
+        messageAudit.setAuditDepth(maxAuditDepth);
+    }
+
+    public int getMaxAuditDepth() {
+        return messageAudit.getAuditDepth();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/b6cb0eac/activemq-unit-tests/src/test/java/org/apache/activemq/broker/policy/DeadLetterExpiryTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/policy/DeadLetterExpiryTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/policy/DeadLetterExpiryTest.java
index 25a98b9..37a6039 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/policy/DeadLetterExpiryTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/policy/DeadLetterExpiryTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.activemq.broker.policy;
 
+import javax.jms.DeliveryMode;
 import javax.jms.Destination;
 import javax.jms.Message;
 import javax.jms.Queue;
@@ -63,6 +64,23 @@ public class DeadLetterExpiryTest extends DeadLetterTest {
         pMap.put(new ActiveMQQueue("loop"), buggyLoopingDLQPolicy);
         pMap.put(new ActiveMQQueue("DLQ.loop"), buggyLoopingDLQPolicy);
 
+        SharedDeadLetterStrategy auditConfigured = new SharedDeadLetterStrategy();
+        auditConfigured.setDeadLetterQueue(new ActiveMQQueue("DLQ.auditConfigured"));
+        auditConfigured.setProcessNonPersistent(true);
+        auditConfigured.setProcessExpired(true);
+        auditConfigured.setMaxProducersToAudit(1);
+        auditConfigured.setMaxAuditDepth(10);
+        PolicyEntry auditConfiguredDlqPolicy = new PolicyEntry();
+        auditConfiguredDlqPolicy.setDeadLetterStrategy(auditConfigured);
+        auditConfiguredDlqPolicy.setExpireMessagesPeriod(1000);
+
+        pMap.put(new ActiveMQQueue("Comp.One"), auditConfiguredDlqPolicy);
+        pMap.put(new ActiveMQQueue("Comp.Two"), auditConfiguredDlqPolicy);
+
+        PolicyEntry auditConfiguredPolicy = new PolicyEntry();
+        auditConfiguredPolicy.setEnableAudit(false); // allow duplicates through the cursor
+        pMap.put(new ActiveMQQueue("DLQ.auditConfigured"), auditConfiguredPolicy);
+
         PolicyEntry policyWithExpiryProcessing = pMap.getDefaultEntry();
         policyWithExpiryProcessing.setExpireMessagesPeriod(1000);
         pMap.setDefaultEntry(policyWithExpiryProcessing);
@@ -122,6 +140,29 @@ public class DeadLetterExpiryTest extends DeadLetterTest {
 
     }
 
+    public void testAuditConfigured() throws Exception {
+        destination = new ActiveMQQueue("Comp.One,Comp.Two");
+        connection.start();
+
+        messageCount = 1;
+        timeToLive = 2000;
+        deliveryMode = DeliveryMode.NON_PERSISTENT;
+        sendMessages();
+        sendMessages();
+
+        assertTrue("all messages expired even duplicates!", Wait.waitFor(new Wait.Condition() {
+            @Override
+            public boolean isSatisified() throws Exception {
+                try {
+                    QueueViewMBean queueViewMBean = getProxyToQueue("DLQ.auditConfigured");
+                    LOG.info("Queue " + queueViewMBean.getName() + ", size:" + queueViewMBean.getQueueSize());
+                    return queueViewMBean.getQueueSize() == 4;
+                } catch (Exception expectedTillExpiry) {}
+                return false;
+            }
+        }));
+    }
+
     public void testNoDLQLoop() throws Exception {
         destination = new ActiveMQQueue("loop");
         messageCount = 2;
@@ -170,6 +211,8 @@ public class DeadLetterExpiryTest extends DeadLetterTest {
 
     protected void setUp() throws Exception {
         transactedMode = true;
+        deliveryMode = DeliveryMode.PERSISTENT;
+        timeToLive = 0;
         super.setUp();
     }