Author: robbie
Date: Tue Dec 7 12:26:21 2010
New Revision: 1043003
URL: http://svn.apache.org/viewvc?rev=1043003&view=rev
Log:
QPID-2974: add configuration for enabling/disabling DLQ functionality
Applied patch from Andrew Kennedy.
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
Tue Dec 7 12:26:21 2010
@@ -127,5 +127,13 @@ public class QueueConfiguration
{
return _config.getString("lvqKey", null);
}
+
+ /**
+ * Check if dead letter queue delivery is enabled, deferring to the
virtualhost configuration if not set.
+ */
+ public boolean isDeadLetterQueueEnabled()
+ {
+ return _config.getBoolean("deadLetterQueues",
_vHostConfig.isDeadLetterQueueEnabled());
+ }
}
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
Tue Dec 7 12:26:21 2010
@@ -712,4 +712,12 @@ public class ServerConfiguration impleme
{
return getConfig().getString("deadLetterQueueSuffix",
AMQQueueFactory.DEFAULT_DLQ_NAME_SUFFIX);
}
+
+ /**
+ * Check if dead letter queue delivery is enabled, defaults to disabled if
not set.
+ */
+ public boolean isDeadLetterQueueEnabled()
+ {
+ return getConfig().getBoolean("deadLetterQueues", false);
+ }
}
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
Tue Dec 7 12:26:21 2010
@@ -195,4 +195,12 @@ public class VirtualHostConfiguration
{
return _config.getLong("transactionTimeout.idleClose", 0L);
}
+
+ /**
+ * Check if dead letter queue delivery is enabled, deferring to the broker
configuration if not set.
+ */
+ public boolean isDeadLetterQueueEnabled()
+ {
+ return _config.getBoolean("queues.deadLetterQueues",
ApplicationRegistry.getInstance().getConfiguration().isDeadLetterQueueEnabled());
+ }
}
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
Tue Dec 7 12:26:21 2010
@@ -34,7 +34,6 @@ import org.apache.qpid.server.virtualhos
public class AMQQueueFactory
{
- public static final boolean CONSTANT_THAT_NEEDS_REPLACED_IS_DLQ_CONFIGURED
= true;//TODO: take from queue configuration
public static final AMQShortString DLQ_ROUTING_KEY = new
AMQShortString("dlq");
public static final AMQShortString X_QPID_DLQ_ENABLED = new
AMQShortString("x-qpid-dlq-enabled");
public static final String DEFAULT_DLQ_NAME_SUFFIX = "_DLQ";
@@ -185,7 +184,7 @@ public class AMQQueueFactory
boolean dlqArgPresent = (arguments != null &&
(arguments.containsKey(X_QPID_DLQ_ENABLED)));
- if(dlqArgPresent || CONSTANT_THAT_NEEDS_REPLACED_IS_DLQ_CONFIGURED)
+ if(dlqArgPresent || qConfig.isDeadLetterQueueEnabled())
{
//verify that the argument isn't explicitly disabling DLQ for this
queue.
boolean dlqEnabled = true;
@@ -286,7 +285,7 @@ public class AMQQueueFactory
arguments.setString(QPID_LAST_VALUE_QUEUE_KEY, config.getLVQKey()
== null ? QPID_LVQ_KEY : config.getLVQKey());
}
- if (!config.getAutoDelete() &&
CONSTANT_THAT_NEEDS_REPLACED_IS_DLQ_CONFIGURED)
+ if (!config.getAutoDelete() && config.isDeadLetterQueueEnabled())
{
if(arguments == null)
{
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java
Tue Dec 7 12:26:21 2010
@@ -43,6 +43,7 @@ public class QueueConfigurationTest exte
fullEnv.setProperty("queues.maximumMessageSize", 1);
fullEnv.setProperty("queues.maximumMessageCount", 1);
fullEnv.setProperty("queues.minimumAlertRepeatGap", 1);
+ fullEnv.setProperty("queues.deadLetterQueues", true);
_fullHostConf = new VirtualHostConfiguration("test", fullEnv);
@@ -133,4 +134,24 @@ public class QueueConfigurationTest exte
assertEquals(1, qConf.getMinimumAlertRepeatGap());
}
+ /**
+ * Tests that the default setting for DLQ configuration is disabled, and
verifies that it can be overridden
+ * at a broker or virtualhost level.
+ */
+ public void testIsDeadLetterQueueEnabled()
+ {
+ // Check default value
+ QueueConfiguration qConf = new QueueConfiguration("test", _env,
_emptyConf);
+ assertFalse(qConf.isDeadLetterQueueEnabled());
+
+ // Check explicit value
+ PropertiesConfiguration fullEnv = new PropertiesConfiguration();
+ fullEnv.setProperty("deadLetterQueues", true);
+ qConf = new QueueConfiguration("test", fullEnv, _fullHostConf);
+ assertTrue(qConf.isDeadLetterQueueEnabled());
+
+ // Check inherited value
+ qConf = new QueueConfiguration("test", _env, _fullHostConf);
+ assertTrue(qConf.isDeadLetterQueueEnabled());
+ }
}
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
Tue Dec 7 12:26:21 2010
@@ -24,6 +24,7 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
+import java.io.Writer;
import java.util.List;
import java.util.Locale;
@@ -37,6 +38,7 @@ import org.apache.qpid.server.exchange.E
import org.apache.qpid.server.protocol.AMQMinaProtocolSession;
import org.apache.qpid.server.protocol.AMQProtocolSession;
import org.apache.qpid.server.protocol.TestIoSession;
+import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.registry.ApplicationRegistry;
import org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -466,6 +468,18 @@ public class ServerConfigurationTest ext
assertEquals(10, serverConfig.getMinimumAlertRepeatGap());
}
+ public void testIsDeadLetterQueueEnabled() throws ConfigurationException
+ {
+ // Check default
+ ServerConfiguration serverConfig = new ServerConfiguration(_config);
+ assertFalse(serverConfig.isDeadLetterQueueEnabled());
+
+ // Check value we set
+ _config.setProperty("deadLetterQueues", true);
+ serverConfig = new ServerConfiguration(_config);
+ assertTrue(serverConfig.isDeadLetterQueueEnabled());
+ }
+
public void testGetProcessors() throws ConfigurationException
{
// Check default
@@ -1640,4 +1654,105 @@ public class ServerConfigurationTest ext
assertEquals("Incorrect virtualhost count", 1,
config.getVirtualHosts().length);
assertEquals("Incorrect virtualhost name", "test-one",
oneHost.getName());
}
+
+ /**
+ * Convenience method to output required security preamble for broker
config
+ */
+ private void writeSecurity(Writer out) throws Exception
+ {
+ out.write("\t<management><enabled>false</enabled></management>\n");
+ out.write("\t<security>\n");
+ out.write("\t\t<principal-databases>\n");
+ out.write("\t\t\t<principal-database>\n");
+ out.write("\t\t\t\t<name>passwordfile</name>\n");
+
out.write("\t\t\t\t<class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class>\n");
+ out.write("\t\t\t\t<attributes>\n");
+ out.write("\t\t\t\t\t<attribute>\n");
+ out.write("\t\t\t\t\t\t<name>passwordFile</name>\n");
+ out.write("\t\t\t\t\t\t<value>/dev/null</value>\n");
+ out.write("\t\t\t\t\t</attribute>\n");
+ out.write("\t\t\t\t</attributes>\n");
+ out.write("\t\t\t</principal-database>\n");
+ out.write("\t\t</principal-databases>\n");
+ out.write("\t\t<jmx>\n");
+ out.write("\t\t\t<access>/dev/null</access>\n");
+
out.write("\t\t\t<principal-database>passwordfile</principal-database>\n");
+ out.write("\t\t</jmx>\n");
+ out.write("\t</security>\n");
+ }
+
+ /**
+ * Test XML configuration file correctly enables dead letter queues
+ */
+ public void testDeadLetterQueueConfigurationFile() throws Exception
+ {
+ // Write config
+ File xml = File.createTempFile(getClass().getName(), "xml");
+ xml.deleteOnExit();
+ FileWriter config = new FileWriter(xml);
+ config.write("<broker>\n");
+ writeSecurity(config);
+ config.write("<deadLetterQueues>true</deadLetterQueues>\n");
+ config.write("<virtualhosts>\n");
+ config.write("<virtualhost>\n");
+ config.write("<name>test</name>\n");
+ config.write("<test>\n");
+ config.write("<queues>\n");
+ config.write("<deadLetterQueues>false</deadLetterQueues>\n");
+ config.write("<queue>\n");
+ config.write("<name>biggles</name>\n");
+ config.write("<biggles>\n");
+ config.write("<deadLetterQueues>true</deadLetterQueues>\n");
+ config.write("</biggles>\n");
+ config.write("</queue>\n");
+ config.write("<queue>\n");
+ config.write("<name>beetle</name>\n");
+ config.write("<beetle />\n");
+ config.write("</queue>\n");
+ config.write("</queues>\n");
+ config.write("</test>\n");
+ config.write("</virtualhost>\n");
+ config.write("<virtualhost>\n");
+ config.write("<name>extra</name>\n");
+ config.write("<extra>\n");
+ config.write("<queues>\n");
+ config.write("<queue>\n");
+ config.write("<name>r2d2</name>\n");
+ config.write("<r2d2>\n");
+ config.write("<deadLetterQueues>false</deadLetterQueues>\n");
+ config.write("</r2d2>\n");
+ config.write("</queue>\n");
+ config.write("<queue>\n");
+ config.write("<name>c3p0</name>\n");
+ config.write("<c3p0 />\n");
+ config.write("</queue>\n");
+ config.write("</queues>\n");
+ config.write("</extra>\n");
+ config.write("</virtualhost>\n");
+ config.write("</virtualhosts>\n");
+ config.write("</broker>\n");
+ config.close();
+
+ // Load config
+ ServerConfiguration server = new
ServerConfiguration(xml.getAbsoluteFile());
+ ApplicationRegistry registry = new
ConfigurationFileApplicationRegistry(xml);
+ ApplicationRegistry.initialise(registry, 1);
+
+ VirtualHostConfiguration test = server.getVirtualHostConfig("test");
+ VirtualHostConfiguration extra = server.getVirtualHostConfig("extra");
+
+ QueueConfiguration biggles = test.getQueueConfiguration("biggles");
+ QueueConfiguration beetle = test.getQueueConfiguration("beetle");
+ QueueConfiguration r2d2 = extra.getQueueConfiguration("r2d2");
+ QueueConfiguration c3p0 = extra.getQueueConfiguration("c3p0");
+
+ // Validate config
+ assertTrue("Broker DLQ should be configured as enabled",
server.isDeadLetterQueueEnabled());
+ assertFalse("Test vhost DLQ should be configured as disabled",
test.isDeadLetterQueueEnabled());
+ assertTrue("Extra vhost DLQ should be enabled, using broker default",
extra.isDeadLetterQueueEnabled());
+ assertTrue("Biggles queue DLQ should be configured as enabled",
biggles.isDeadLetterQueueEnabled());
+ assertFalse("Beetle queue DLQ should be disabled, using test vhost
default", beetle.isDeadLetterQueueEnabled());
+ assertFalse("R2D2 queue DLQ should be configured as disabled",
r2d2.isDeadLetterQueueEnabled());
+ assertTrue("C3P0 queue DLQ should be enabled, using broker default",
c3p0.isDeadLetterQueueEnabled());
+ }
}
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
Tue Dec 7 12:26:21 2010
@@ -21,9 +21,7 @@ package org.apache.qpid.server.configura
import junit.framework.TestCase;
-import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
-import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.server.queue.AMQPriorityQueue;
import org.apache.qpid.server.queue.AMQQueue;
@@ -46,6 +44,7 @@ public class VirtualHostConfigurationTes
configXml = new XMLConfiguration();
configXml.setRootElementName("virtualhosts");
configXml.addProperty("virtualhost(-1).name", "test");
+ configXml.addProperty("virtualhost(-1).name", "extra");
}
public void tearDown() throws Exception
@@ -59,28 +58,19 @@ public class VirtualHostConfigurationTes
public void testQueuePriority() throws Exception
{
// Set up queue with 5 priorities
-
configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name(-1)",
- "atest");
-
configXml.addProperty("virtualhost.test.queues.queue.atest(-1).exchange",
- "amq.direct");
-
configXml.addProperty("virtualhost.test.queues.queue.atest.priorities",
- "5");
+ configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name",
"atest");
+ configXml.addProperty("virtualhost.test.queues.queue.atest.exchange",
"amq.direct");
+
configXml.addProperty("virtualhost.test.queues.queue.atest.priorities", "5");
// Set up queue with JMS style priorities
-
configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name(-1)",
- "ptest");
-
configXml.addProperty("virtualhost.test.queues.queue.ptest(-1).exchange",
- "amq.direct");
- configXml.addProperty("virtualhost.test.queues.queue.ptest.priority",
- "true");
+ configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name",
"ptest");
+ configXml.addProperty("virtualhost.test.queues.queue.ptest.exchange",
"amq.direct");
+ configXml.addProperty("virtualhost.test.queues.queue.ptest.priority",
"true");
// Set up queue with no priorities
-
configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name(-1)",
- "ntest");
-
configXml.addProperty("virtualhost.test.queues.queue.ntest(-1).exchange",
- "amq.direct");
- configXml.addProperty("virtualhost.test.queues.queue.ntest.priority",
- "false");
+ configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name",
"ntest");
+ configXml.addProperty("virtualhost.test.queues.queue.ntest.exchange",
"amq.direct");
+ configXml.addProperty("virtualhost.test.queues.queue.ntest.priority",
"false");
VirtualHost vhost = new VirtualHost(new
VirtualHostConfiguration("test", configXml.subset("virtualhost.test")));
@@ -107,13 +97,13 @@ public class VirtualHostConfigurationTes
configXml.addProperty("virtualhost.test.queues.maximumMessageSize",
"2");
configXml.addProperty("virtualhost.test.queues.maximumMessageAge",
"3");
- configXml.addProperty("virtualhost.test.queues(-1).queue(1).name(1)",
"atest");
-
configXml.addProperty("virtualhost.test.queues.queue.atest(-1).exchange",
"amq.direct");
-
configXml.addProperty("virtualhost.test.queues.queue.atest(-1).maximumQueueDepth",
"4");
-
configXml.addProperty("virtualhost.test.queues.queue.atest(-1).maximumMessageSize",
"5");
-
configXml.addProperty("virtualhost.test.queues.queue.atest(-1).maximumMessageAge",
"6");
+ configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name",
"atest");
+ configXml.addProperty("virtualhost.test.queues.queue.atest.exchange",
"amq.direct");
+
configXml.addProperty("virtualhost.test.queues.queue.atest.maximumQueueDepth",
"4");
+
configXml.addProperty("virtualhost.test.queues.queue.atest.maximumMessageSize",
"5");
+
configXml.addProperty("virtualhost.test.queues.queue.atest.maximumMessageAge",
"6");
-
configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name(-1)",
"btest");
+ configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name",
"btest");
VirtualHost vhost = new VirtualHost(new
VirtualHostConfiguration("test", configXml.subset("virtualhost.test")));
@@ -130,5 +120,57 @@ public class VirtualHostConfigurationTes
assertEquals(3, bTest.getMaximumMessageAge());
}
+
+ /**
+ * Tests the full set of configuration options for enabling DLQs in the
broker configuration.
+ */
+ public void testIsDeadLetterQueueEnabled() throws Exception
+ {
+ // Set up vhosts and queues
+ configXml.addProperty("virtualhost.test.queues.deadLetterQueues",
"true");
+ configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name",
"biggles");
+
configXml.addProperty("virtualhost.test.queues.queue.biggles.deadLetterQueues",
"false");
+ configXml.addProperty("virtualhost.test.queues(-1).queue(-1).name",
"beetle");
+
+ configXml.addProperty("virtualhost.extra.queues(-1).queue(-1).name",
"r2d2");
+
configXml.addProperty("virtualhost.extra.queues.queue.r2d2.deadLetterQueues",
"true");
+ configXml.addProperty("virtualhost.extra.queues(-1).queue(-1).name",
"c3p0");
+
+ // Get vhosts
+ VirtualHost test = new VirtualHost(new
VirtualHostConfiguration("test", configXml.subset("virtualhost.test")));
+ VirtualHost extra = new VirtualHost(new
VirtualHostConfiguration("extra", configXml.subset("virtualhost.extra")));
+
+ // Enabled specifically
+ assertTrue("Test vhost DLQ was configured as enabled",
test.getConfiguration().isDeadLetterQueueEnabled());
+ assertTrue("r2d2 queue DLQ was configured as enabled",
extra.getConfiguration().getQueueConfiguration("r2d2").isDeadLetterQueueEnabled());
+
+ // Enabled by test vhost default
+ assertTrue("beetle queue DLQ was configured as enabled",
test.getConfiguration().getQueueConfiguration("beetle").isDeadLetterQueueEnabled());
+
+ // Disabled specifically
+ assertFalse("Biggles queue DLQ was configured as disabled",
test.getConfiguration().getQueueConfiguration("biggles").isDeadLetterQueueEnabled());
+
+ // Using broker default of disabled
+ assertFalse("Extra vhost DLQ disabled, using broker default",
extra.getConfiguration().isDeadLetterQueueEnabled());
+ assertFalse("c3p0 queue DLQ was configured as disabled",
extra.getConfiguration().getQueueConfiguration("c3p0").isDeadLetterQueueEnabled());
+
+ // Get queues
+ AMQQueue biggles = test.getQueueRegistry().getQueue(new
AMQShortString("biggles"));
+ AMQQueue beetle = test.getQueueRegistry().getQueue(new
AMQShortString("beetle"));
+ AMQQueue r2d2 = extra.getQueueRegistry().getQueue(new
AMQShortString("r2d2"));
+ AMQQueue c3p0 = extra.getQueueRegistry().getQueue(new
AMQShortString("c3p0"));
+
+ // Disabled specifically for this queue, overriding virtualhost setting
+ assertNull("Biggles queue should not have alt exchange as DLQ should
be configured as disabled: " + biggles.getAlternateExchange(),
biggles.getAlternateExchange());
+
+ // Enabled for all queues on the virtualhost
+ assertNotNull("Beetle queue should have an alt exchange as DLQ should
be enabled, using test vhost default", beetle.getAlternateExchange());
+
+ // Enabled specifically for this queue, overriding the default broker
setting of disabled
+ assertNotNull("R2D2 queue should have an alt exchange as DLQ should be
configured as enabled", r2d2.getAlternateExchange());
+
+ // Disabled by the default broker setting
+ assertNull("C3PO queue should not have an alt exchange as DLQ should
be disabled, using broker default", c3p0.getAlternateExchange());
+ }
}
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java?rev=1043003&r1=1043002&r2=1043003&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
Tue Dec 7 12:26:21 2010
@@ -76,6 +76,27 @@ public class AMQQueueFactoryTest extends
AMQQueue queue = AMQQueueFactory.createAMQQueueImpl(new
AMQShortString("testQueue"), false, new AMQShortString("owner"), false,
_virtualHost, null);
assertEquals("Queue not a simple queue", SimpleAMQQueue.class,
queue.getClass());
+ assertNull("Queue should not have alternate exchange as DLQ isnt
enabled", queue.getAlternateExchange());
+ }
+ catch (AMQException e)
+ {
+ fail(e.getMessage());
+ }
+ }
+
+ /**
+ * Tests that setting the {...@link AMQQueueFactory#X_QPID_DLQ_ENABLED}
argument causes the alternate exchange to be set.
+ */
+ public void testDeadLetterQueueEnabled()
+ {
+ FieldTable fieldTable = new FieldTable();
+ fieldTable.put(new AMQShortString(AMQQueueFactory.X_QPID_DLQ_ENABLED),
true);
+
+ try
+ {
+ AMQQueue queue = AMQQueueFactory.createAMQQueueImpl(new
AMQShortString("testQueue"), false, new AMQShortString("owner"), false,
+ _virtualHost, fieldTable);
+ assertNotNull("Queue should have an alternate exchange as DLQ is
enabled", queue.getAlternateExchange());
}
catch (AMQException e)
{
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]