summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2010-12-07 12:25:45 +0000
committerRobert Gemmell <robbie@apache.org>2010-12-07 12:25:45 +0000
commitc363a8a2300a7230171a322dfed9d30c68c9c32f (patch)
tree9342828a209696459f602198728435ef38835988
parente4ea6e8536ac8dea773ade50cc2872ef6ac4f298 (diff)
downloadqpid-python-c363a8a2300a7230171a322dfed9d30c68c9c32f.tar.gz
QPID-2973: add JMX support for creating and manipulating queues with new DLQ functionality
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.5.x-dev@1043001 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java29
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java2
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java14
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java19
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/server/AMQBrokerManagerMBeanTest.java107
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java46
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java5
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java18
-rw-r--r--qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java23
-rw-r--r--qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java23
-rw-r--r--qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java2
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java2
12 files changed, 273 insertions, 17 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
index 88e276046b..f17d718fe8 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
@@ -41,6 +41,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import javax.management.JMException;
import javax.management.MBeanException;
@@ -49,6 +50,8 @@ import javax.management.ObjectName;
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.FieldTable;
+import org.apache.qpid.framing.FieldTableFactory;
import org.apache.qpid.management.common.mbeans.ManagedBroker;
import org.apache.qpid.management.common.mbeans.ManagedQueue;
import org.apache.qpid.management.common.mbeans.annotations.MBeanConstructor;
@@ -252,17 +255,13 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr
}
}
- /**
- * Creates a new queue and registers it with the registry and puts it
- * in persistance storage if durable queue.
- *
- * @param queueName
- * @param durable
- * @param owner
- * @throws JMException
- */
public void createNewQueue(String queueName, String owner, boolean durable) throws JMException
{
+ createNewQueue(queueName, owner, durable, null);
+ }
+
+ public void createNewQueue(String queueName, String owner, boolean durable, Map<String,Object> arguments) throws JMException
+ {
AMQQueue queue = _queueRegistry.getQueue(new AMQShortString(queueName));
if (queue != null)
{
@@ -277,12 +276,18 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr
{
ownerShortString = new AMQShortString(owner);
}
+
+ FieldTable args = null;
+ if(arguments != null)
+ {
+ args = FieldTable.convertToFieldTable(arguments);
+ }
- queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString(queueName), durable, ownerShortString, false, getVirtualHost(),
- null);
+ queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString(queueName), durable, ownerShortString,
+ false, getVirtualHost(), args);
if (queue.isDurable() && !queue.isAutoDelete())
{
- _messageStore.createQueue(queue);
+ _messageStore.createQueue(queue, args);
}
_queueRegistry.registerQueue(queue);
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
index b92e7db02e..79aba8e550 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
@@ -252,4 +252,6 @@ public interface AMQQueue extends Managable, Comparable<AMQQueue>
Exchange getAlternateExchange();
void setAlternateExchange(Exchange exchange);
+
+ void setAlternateExchange(String exchangeName);
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
index fd2d5fa36b..fb4415485d 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
@@ -33,6 +33,7 @@ import org.apache.qpid.framing.abstraction.ContentChunk;
import org.apache.qpid.management.common.mbeans.ManagedQueue;
import org.apache.qpid.management.common.mbeans.annotations.MBeanConstructor;
import org.apache.qpid.management.common.mbeans.annotations.MBeanDescription;
+import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.management.AMQManagedObject;
import org.apache.qpid.server.management.ManagedObject;
import org.apache.qpid.server.store.StoreContext;
@@ -278,6 +279,19 @@ public class AMQQueueMBean extends AMQManagedObject implements ManagedQueue, Que
return _queue.isOverfull();
}
+ public void setAlternateExchange(String exchangeName)
+ {
+ _queue.setAlternateExchange(exchangeName);
+ }
+
+ public String getAlternateExchange()
+ {
+ Exchange exchange = _queue.getAlternateExchange();
+ AMQShortString name = exchange == null ? null : exchange.getName();
+
+ return name == null ? null : name.asString();
+ }
+
/**
* Checks if there is any notification to be send to the listeners
*/
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
index 03ff2c48b9..209e2eafe4 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
@@ -1824,4 +1824,23 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener
{
_alternateExchange = exchange;
}
+
+ public void setAlternateExchange(String exchangeName)
+ {
+ if(exchangeName == null || exchangeName.equals(""))
+ {
+ _alternateExchange = null;
+ return;
+ }
+
+ Exchange exchange = getVirtualHost().getExchangeRegistry().getExchange(new AMQShortString(exchangeName));
+ if(exchange != null)
+ {
+ _alternateExchange = exchange;
+ }
+ else
+ {
+ throw new RuntimeException("Exchange '" + exchangeName + "' is not registered with the VirtualHost.");
+ }
+ }
}
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/AMQBrokerManagerMBeanTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/AMQBrokerManagerMBeanTest.java
index e3889162ad..d202f4935f 100644
--- a/qpid/java/broker/src/test/java/org/apache/qpid/server/AMQBrokerManagerMBeanTest.java
+++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/AMQBrokerManagerMBeanTest.java
@@ -20,10 +20,20 @@
*/
package org.apache.qpid.server;
+import java.util.HashMap;
+import java.util.Map;
+
import junit.framework.TestCase;
+
+import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.management.common.mbeans.ManagedBroker;
+import org.apache.qpid.server.exchange.DefaultExchangeFactory;
+import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.server.queue.AMQPriorityQueue;
+import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.queue.AMQQueueFactory;
import org.apache.qpid.server.queue.QueueRegistry;
import org.apache.qpid.server.registry.ApplicationRegistry;
import org.apache.qpid.server.registry.IApplicationRegistry;
@@ -79,6 +89,103 @@ public class AMQBrokerManagerMBeanTest extends TestCase
assertTrue(_queueRegistry.getQueue(new AMQShortString(queueName)) == null);
}
+ /**
+ * Tests that setting the {@link AMQQueueFactory#X_QPID_DLQ_ENABLED} argument true does
+ * cause the alternate exchange to be set and DLQ to be produced.
+ */
+ public void testCreateNewQueueWithDLQEnabled() throws Exception
+ {
+ Map<String,Object> args = new HashMap<String, Object>();
+ args.put(AMQQueueFactory.X_QPID_DLQ_ENABLED.asString(), true);
+
+ AMQShortString queueName = new AMQShortString("testCreateNewQueueWithDLQEnabled");
+ AMQShortString dlExchangeName = new AMQShortString(queueName + DefaultExchangeFactory.DEFAULT_DLE_NAME_SUFFIX);
+ AMQShortString dlQueueName = new AMQShortString(queueName + AMQQueueFactory.DEFAULT_DLQ_NAME_SUFFIX);
+
+ QueueRegistry qReg = _vHost.getQueueRegistry();
+ ExchangeRegistry exReg = _vHost.getExchangeRegistry();
+
+ assertNull("The DLQ should not yet exist", qReg.getQueue(new AMQShortString(dlQueueName)));
+ assertNull("The alternate exchange should not yet exist", exReg.getExchange(dlExchangeName));
+
+ ManagedBroker mbean = new AMQBrokerManagerMBean((VirtualHost.VirtualHostMBean) _vHost.getManagedObject());
+ mbean.createNewQueue(queueName.asString(), "test", false, args);
+
+ Exchange altExchange = exReg.getExchange(dlExchangeName);
+ assertNotNull("The alternate exchange should be registered as DLQ was enabled", altExchange);
+ assertEquals("Alternate exchange type was not as expected", ExchangeDefaults.FANOUT_EXCHANGE_CLASS, altExchange.getType());
+
+ AMQQueue dlQueue = qReg.getQueue(dlQueueName);
+ assertNotNull("The DLQ was not registered as expected", dlQueue);
+ assertTrue("DLQ should have been bound to the alternate exchange", altExchange.isBound(dlQueue));
+ }
+
+ /**
+ * Tests that setting the {@link AMQQueueFactory#X_QPID_DLQ_ENABLED} argument false does not
+ * result in the alternate exchange being set and DLQ being created.
+ */
+ public void testCreateNewQueueWithDLQDisabled() throws Exception
+ {
+ Map<String,Object> args = new HashMap<String, Object>();
+ args.put(AMQQueueFactory.X_QPID_DLQ_ENABLED.asString(), false);
+
+ AMQShortString queueName = new AMQShortString("testCreateNewQueueWithDLQDisabled");
+ AMQShortString dlExchangeName = new AMQShortString(queueName + DefaultExchangeFactory.DEFAULT_DLE_NAME_SUFFIX);
+ AMQShortString dlQueueName = new AMQShortString(queueName + AMQQueueFactory.DEFAULT_DLQ_NAME_SUFFIX);
+
+ QueueRegistry qReg = _vHost.getQueueRegistry();
+ ExchangeRegistry exReg = _vHost.getExchangeRegistry();
+
+ assertNull("The DLQ should not exist", qReg.getQueue(new AMQShortString(dlQueueName)));
+ assertNull("The alternate exchange should not exist", exReg.getExchange(dlExchangeName));
+
+ ManagedBroker mbean = new AMQBrokerManagerMBean((VirtualHost.VirtualHostMBean) _vHost.getManagedObject());
+ mbean.createNewQueue(queueName.asString(), "test", false, args);
+
+ Exchange altExchange = exReg.getExchange(dlExchangeName);
+ assertNull("The alternate exchange should be not registered as DLQ was disabled", altExchange);
+
+ AMQQueue dlQueue = qReg.getQueue(dlQueueName);
+ assertNull("The DLQ should not be registered as DLQ was disabled on created queue", dlQueue);
+
+ AMQQueue queue = qReg.getQueue(queueName);
+ assertNull("The alternate exchange should be not set as DLQ wasnt enabled", queue.getAlternateExchange());
+ }
+
+ /**
+ * Tests that setting the {@link AMQQueueFactory#X_QPID_PRIORITIES} argument prompts creation of
+ * a Priority Queue, without alternateExchange or a DLQ being set/created.
+ */
+ public void testCreatePriorityQueue() throws Exception
+ {
+ int numPriorities = 7;
+ Map<String,Object> args = new HashMap<String, Object>();
+ args.put(AMQQueueFactory.X_QPID_PRIORITIES.asString(), numPriorities);
+
+ AMQShortString queueName = new AMQShortString("testCreatePriorityQueue");
+ AMQShortString dlExchangeName = new AMQShortString(queueName + DefaultExchangeFactory.DEFAULT_DLE_NAME_SUFFIX);
+ AMQShortString dlQueueName = new AMQShortString(queueName + AMQQueueFactory.DEFAULT_DLQ_NAME_SUFFIX);
+
+ QueueRegistry qReg = _vHost.getQueueRegistry();
+ ExchangeRegistry exReg = _vHost.getExchangeRegistry();
+
+ assertNull("The DLQ should not exist", qReg.getQueue(new AMQShortString(dlQueueName)));
+ assertNull("The alternate exchange should not exist", exReg.getExchange(dlExchangeName));
+
+ ManagedBroker mbean = new AMQBrokerManagerMBean((VirtualHost.VirtualHostMBean) _vHost.getManagedObject());
+ mbean.createNewQueue(queueName.asString(), "test", false, args);
+
+ AMQQueue queue = qReg.getQueue(queueName);
+ assertEquals("Queue is not a priorty queue", AMQPriorityQueue.class, queue.getClass());
+ assertEquals("Number of priorities supported was not as expected", numPriorities, ((AMQPriorityQueue)queue).getPriorities());
+
+ assertNull("The alternate exchange should be not registered as DLQ wasnt enabled", exReg.getExchange(dlExchangeName));
+ assertNull("The alternate exchange should be not set as DLQ wasnt enabled", queue.getAlternateExchange());
+
+ AMQQueue dlQueue = qReg.getQueue(dlQueueName);
+ assertNull("The DLQ should not be registered as DLQ wasnt enabled", dlQueue);
+ }
+
@Override
protected void setUp() throws Exception
{
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java
index 77e2fd35cf..f7aefb1900 100644
--- a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java
+++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java
@@ -33,6 +33,7 @@ import org.apache.qpid.server.RequiredDeliveryException;
import org.apache.qpid.server.subscription.Subscription;
import org.apache.qpid.server.subscription.SubscriptionFactory;
import org.apache.qpid.server.subscription.SubscriptionFactoryImpl;
+import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.protocol.AMQProtocolSession;
import org.apache.qpid.server.protocol.InternalTestProtocolSession;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -369,6 +370,51 @@ public class AMQQueueMBeanTest extends TestCase
assertFalse(channel.getBlocking());
}
+ /**
+ * Tests the get/set methods for manipulating the queues alternate exchange
+ */
+ public void testAlternateExchangeAttribute() throws Exception
+ {
+ assertNull("expected MBean alternate exchange to be null initially", _queueMBean.getAlternateExchange());
+ assertNull("expected queue alternate exchange to be null initially", _queue.getAlternateExchange());
+
+ try
+ {
+ //try to set to a non-existent exchange
+ _queueMBean.setAlternateExchange("doesnt-exist-abcdefg");
+ fail("expected exception did not occur");
+ }
+ catch (RuntimeException e)
+ {
+ //expected exception, ignore
+ }
+
+ _queueMBean.setAlternateExchange("amq.fanout");
+ assertNotNull("MBean still reports no alternate exchange", _queueMBean.getAlternateExchange());
+ assertNotNull("Queue still has no alternate exchange", _queue.getAlternateExchange());
+
+ Exchange altExch = _virtualHost.getExchangeRegistry().getExchange(new AMQShortString("amq.fanout"));
+ assertNotNull("failed to retrieve amq.fanout from exchange registry", altExch);
+
+ assertEquals("unexpected exchange instance set as alternate exchange", altExch, _queue.getAlternateExchange());
+ assertEquals("unexpected exchange name for alternate exchange", "amq.fanout", _queueMBean.getAlternateExchange());
+
+ //test using "" clears the value
+ _queueMBean.setAlternateExchange("");
+ assertNull("MBean still reports having an alternate exchange", _queueMBean.getAlternateExchange());
+ assertNull("Queue still reports having an alternate exchange", _queue.getAlternateExchange());
+
+ //set amq.fanout as alt exchange again
+ _queueMBean.setAlternateExchange("amq.fanout");
+ assertNotNull("MBean still reports no alternate exchange", _queueMBean.getAlternateExchange());
+ assertNotNull("Queue still has no alternate exchange", _queue.getAlternateExchange());
+
+ //test using null clears the value
+ _queueMBean.setAlternateExchange(null);
+ assertNull("MBean still reports having an alternate exchange", _queueMBean.getAlternateExchange());
+ assertNull("Queue still reports having an alternate exchange", _queue.getAlternateExchange());
+ }
+
private IncomingMessage message(final boolean immediate, boolean persistent) throws AMQException
{
MessagePublishInfo publish = new MessagePublishInfo()
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
index eedfbb403e..42164953a4 100644
--- a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
+++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
@@ -386,4 +386,9 @@ public class MockAMQQueue implements AMQQueue
{
}
+
+ public void setAlternateExchange(String exchangeName)
+ {
+
+ }
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java
index b14600ad21..7f826b016e 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java
@@ -1185,4 +1185,22 @@ public class FieldTable
return _properties.equals(f._properties);
}
+
+ public static FieldTable convertToFieldTable(Map<String, Object> map)
+ {
+ if (map != null)
+ {
+ FieldTable table = new FieldTable();
+ for(Map.Entry<String,Object> entry : map.entrySet())
+ {
+ table.put(new AMQShortString(entry.getKey()), entry.getValue());
+ }
+
+ return table;
+ }
+ else
+ {
+ return null;
+ }
+ }
}
diff --git a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
index a13ceb2316..3a35e58e48 100644
--- a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
+++ b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
@@ -23,6 +23,7 @@ package org.apache.qpid.management.common.mbeans;
import java.io.IOException;
import java.util.List;
+import java.util.Map;
import javax.management.JMException;
import javax.management.MBeanOperationInfo;
@@ -97,20 +98,38 @@ public interface ManagedBroker
throws IOException, JMException;
/**
- * Create a new Queue on the Broker server
+ * Create a new Queue in the VirtualHost
* @param queueName
* @param durable
* @param owner
* @throws IOException
* @throws JMException
*/
- @MBeanOperation(name="createNewQueue", description="Create a new Queue on the Broker server", impact= MBeanOperationInfo.ACTION)
+ @MBeanOperation(name="createNewQueue", description="Create a new Queue in the VirtualHost", impact= MBeanOperationInfo.ACTION)
void createNewQueue(@MBeanOperationParameter(name="queue name", description="Name of the new queue")String queueName,
@MBeanOperationParameter(name="owner", description="Owner name")String owner,
@MBeanOperationParameter(name="durable", description="true if the queue should be durable")boolean durable)
throws IOException, JMException;
/**
+ * Create a new Queue in the VirtualHost
+ *
+ * @since Qpid JMX API 1.10
+ * @param queueName name of the new queue
+ * @param durable true if the queue should be durable
+ * @param owner owner
+ * @param arguments declaration arguments for use when creating the queue, may be null.
+ * @throws IOException
+ * @throws JMException
+ */
+ @MBeanOperation(name="createNewQueue", description="Create a new Queue in the VirtualHost", impact= MBeanOperationInfo.ACTION)
+ void createNewQueue(@MBeanOperationParameter(name="queue name", description="Name of the new queue")String queueName,
+ @MBeanOperationParameter(name="owner", description="Owner name")String owner,
+ @MBeanOperationParameter(name="durable", description="true if the queue should be durable")boolean durable,
+ @MBeanOperationParameter(name="arguments", description="Map of arguments")Map<String,Object> arguments)
+ throws IOException, JMException;
+
+ /**
* Unregisters the Queue bindings, removes the subscriptions and unregisters
* from the managed objects.
* @param queueName
diff --git a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java
index f51755cf93..870fae53e9 100644
--- a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java
+++ b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java
@@ -70,6 +70,7 @@ public interface ManagedQueue
String ATTR_CAPACITY = "Capacity";
String ATTR_FLOW_OVERFULL = "FlowOverfull";
String ATTR_FLOW_RESUME_CAPACITY = "FlowResumeCapacity";
+ String ATTR_ALT_EXCHANGE = "AlternateExchange";
//All attribute names constant
String[] QUEUE_ATTRIBUTES = new String[]{
@@ -88,7 +89,8 @@ public interface ManagedQueue
ATTR_RCVD_MSG_COUNT,
ATTR_CAPACITY,
ATTR_FLOW_OVERFULL,
- ATTR_FLOW_RESUME_CAPACITY
+ ATTR_FLOW_RESUME_CAPACITY,
+ ATTR_ALT_EXCHANGE
};
/**
@@ -286,6 +288,25 @@ public interface ManagedQueue
@MBeanAttribute(name="FlowOverfull", description="true if the queue is considered overfull by the Flow Control system")
boolean isFlowOverfull() throws IOException;
+ /**
+ * Sets the Alternate Exchange for the queue, for use in dead letter queue functionality.
+ *
+ * @since Qpid JMX API 1.10
+ * @param the name of the exchange to use. Specifying null or the empty string will clear the alternate exchange.
+ * @throws IOException
+ */
+ void setAlternateExchange(String exchangeName) throws IOException;
+
+ /**
+ * Returns the name of the Alternate Exchange for the queue, or null if there isn't one.
+ *
+ * @since Qpid JMX API 1.10
+ * @return the name of the Alternate Exchange for the queue, or null if there isn't one
+ * @throws IOException
+ */
+ @MBeanAttribute(name="AlternateExchange", description="Alternate exchange for the queue")
+ String getAlternateExchange() throws IOException;
+
//********** Operations *****************//
diff --git a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
index c0dcae1c07..b8c392d4bc 100644
--- a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
+++ b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
@@ -47,7 +47,7 @@ public interface ServerInformation
* Qpid JMX API 1.1 can be assumed.
*/
int QPID_JMX_API_MAJOR_VERSION = 1;
- int QPID_JMX_API_MINOR_VERSION = 9;
+ int QPID_JMX_API_MINOR_VERSION = 10;
/**
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
index 0f1768b007..fb00d6f267 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
@@ -47,7 +47,7 @@ public abstract class ApplicationRegistry
//max supported broker management interface supported by this release of the management console
public static final int SUPPORTED_QPID_JMX_API_MAJOR_VERSION = 1;
- public static final int SUPPORTED_QPID_JMX_API_MINOR_VERSION = 8;
+ public static final int SUPPORTED_QPID_JMX_API_MINOR_VERSION = 10;
public static final String DATA_DIR = System.getProperty("user.home") + File.separator + ".qpidmc";