Repository: activemq Updated Branches: refs/heads/master 8023b9ee4 -> d2c0eddaa
[AMQ-6691] allow dlq flag to be set via jmx to allow retry op after a restart - use destinations element for long term persistence Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/d2c0edda Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/d2c0edda Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/d2c0edda Branch: refs/heads/master Commit: d2c0eddaad7a5633d50c9a1fef2014b9fc0fb5bc Parents: 8023b9e Author: gtully <gary.tu...@gmail.com> Authored: Wed May 31 12:39:48 2017 +0100 Committer: gtully <gary.tu...@gmail.com> Committed: Wed May 31 12:39:48 2017 +0100 ---------------------------------------------------------------------- .../org/apache/activemq/broker/jmx/DestinationView.java | 5 +++++ .../activemq/broker/jmx/DestinationViewMBean.java | 6 ++++++ .../org/apache/activemq/broker/region/RegionBroker.java | 2 +- .../apache/activemq/command/ActiveMQDestination.java | 4 ++-- .../test/java/org/apache/activemq/bugs/AMQ6059Test.java | 12 ++++++++++++ 5 files changed, 26 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/d2c0edda/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java index f701ebc..769d796 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java @@ -536,6 +536,11 @@ public class DestinationView implements DestinationViewMBean { } @Override + public void setDLQ(boolean val) { + destination.getActiveMQDestination().setDLQ(val); + } + + @Override public long getBlockedSends() { return destination.getDestinationStatistics().getBlockedSends().getCount(); } http://git-wip-us.apache.org/repos/asf/activemq/blob/d2c0edda/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java index fc014a2..7e09948 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java @@ -409,6 +409,12 @@ public interface DestinationViewMBean { @MBeanInfo("Dead Letter Queue") boolean isDLQ(); + /** + * @param value + * enable/disable the DLQ flag + */ + void setDLQ(boolean value); + @MBeanInfo("Number of messages blocked for flow control") long getBlockedSends(); http://git-wip-us.apache.org/repos/asf/activemq/blob/d2c0edda/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java index 9847550..32efab4 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java @@ -786,7 +786,7 @@ public class RegionBroker extends EmptyBroker { if (context.getSecurityContext() == null || !context.getSecurityContext().isBrokerContext()) { adminContext = BrokerSupport.getConnectionContext(this); } - addDestination(adminContext, deadLetterDestination, false).getActiveMQDestination().setDLQ(); + addDestination(adminContext, deadLetterDestination, false).getActiveMQDestination().setDLQ(true); BrokerSupport.resendNoCopy(adminContext, message, deadLetterDestination); return true; } http://git-wip-us.apache.org/repos/asf/activemq/blob/d2c0edda/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java ---------------------------------------------------------------------- diff --git a/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java b/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java index 149145d..c63fd1e 100644 --- a/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java +++ b/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQDestination.java @@ -425,11 +425,11 @@ public abstract class ActiveMQDestination extends JNDIBaseStorable implements Da return options != null && options.containsKey(IS_DLQ); } - public void setDLQ() { + public void setDLQ(boolean val) { if (options == null) { options = new HashMap<String, String>(); } - options.put(IS_DLQ, String.valueOf(true)); + options.put(IS_DLQ, String.valueOf(val)); } public static UnresolvedDestinationTransformer getUnresolvableDestinationTransformer() { http://git-wip-us.apache.org/repos/asf/activemq/blob/d2c0edda/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ6059Test.java ---------------------------------------------------------------------- diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ6059Test.java b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ6059Test.java index 44053d0..0f6b9f5 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ6059Test.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ6059Test.java @@ -16,6 +16,7 @@ */ package org.apache.activemq.bugs; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -107,6 +108,17 @@ public class AMQ6059Test { verifyMessageIsRecovered(dlqQueue); } + @Test + public void testSetDlqFlag() throws Exception { + final ActiveMQQueue toFlp = new ActiveMQQueue("QNameToFlip"); + sendMessage(toFlp); + + final QueueViewMBean queueViewMBean = getProxyToQueue(toFlp.getQueueName()); + assertFalse(queueViewMBean.isDLQ()); + queueViewMBean.setDLQ(true); + assertTrue(queueViewMBean.isDLQ()); + } + protected BrokerService createBroker() throws Exception { return createBrokerWithDLQ(true); }