You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2018/05/24 20:29:46 UTC
[31/33] activemq-artemis git commit: ARTEMIS-1887 Setting
default-max-consumers in address-setting not working
ARTEMIS-1887 Setting default-max-consumers in address-setting not working
When setting "default-max-consumers" in addressing setting in broker.xml
It has no effect on the "max-consumers" property on matching address queues.
Tests added as part of a previous commit
This closes #2107
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/fd3baf1e
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/fd3baf1e
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/fd3baf1e
Branch: refs/heads/2.6.x
Commit: fd3baf1ea29b55f9713bc302c313d02d76c30fab
Parents: 390a07e
Author: saurabhrai <ra...@hotmail.com>
Authored: Thu May 24 17:49:24 2018 +0530
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu May 24 14:36:23 2018 -0400
----------------------------------------------------------------------
.../artemis/core/config/CoreQueueConfiguration.java | 14 ++++++++++++++
.../core/deployers/impl/FileConfigurationParser.java | 4 +++-
.../artemis/core/server/impl/ActiveMQServerImpl.java | 7 +++++--
3 files changed, 22 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/fd3baf1e/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/CoreQueueConfiguration.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/CoreQueueConfiguration.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/CoreQueueConfiguration.java
index 236fac6..f301b90 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/CoreQueueConfiguration.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/CoreQueueConfiguration.java
@@ -45,6 +45,8 @@ public class CoreQueueConfiguration implements Serializable {
private RoutingType routingType = ActiveMQDefaultConfiguration.getDefaultRoutingType();
+ private boolean maxConsumerConfigured = false;
+
public CoreQueueConfiguration() {
}
@@ -76,6 +78,15 @@ public class CoreQueueConfiguration implements Serializable {
return lastValue;
}
+ public boolean isMaxConsumerConfigured() {
+ return maxConsumerConfigured;
+ }
+
+ public CoreQueueConfiguration setMaxConsumerConfigured(boolean maxConsumerConfigured) {
+ this.maxConsumerConfigured = maxConsumerConfigured;
+ return this;
+ }
+
/**
* @param address the address to set
*/
@@ -171,6 +182,7 @@ public class CoreQueueConfiguration implements Serializable {
result = prime * result + ((purgeOnNoConsumers == null) ? 0 : purgeOnNoConsumers.hashCode());
result = prime * result + ((exclusive == null) ? 0 : exclusive.hashCode());
result = prime * result + ((lastValue == null) ? 0 : lastValue.hashCode());
+ result = prime * result + (maxConsumerConfigured ? 1331 : 1337);
return result;
}
@@ -190,6 +202,8 @@ public class CoreQueueConfiguration implements Serializable {
return false;
if (durable != other.durable)
return false;
+ if (maxConsumerConfigured != other.maxConsumerConfigured)
+ return false;
if (filterString == null) {
if (other.filterString != null)
return false;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/fd3baf1e/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java
index 0444ba8..17f3b67 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java
@@ -1093,6 +1093,7 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
String address = null;
String filterString = null;
boolean durable = true;
+ boolean maxConumserConfigured = false;
int maxConsumers = ActiveMQDefaultConfiguration.getDefaultMaxQueueConsumers();
boolean purgeOnNoConsumers = ActiveMQDefaultConfiguration.getDefaultPurgeOnNoConsumers();
String user = null;
@@ -1105,6 +1106,7 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
if (item.getNodeName().equals("max-consumers")) {
maxConsumers = Integer.parseInt(item.getNodeValue());
Validators.MAX_QUEUE_CONSUMERS.validate(name, maxConsumers);
+ maxConumserConfigured = true;
} else if (item.getNodeName().equals("purge-on-no-consumers")) {
purgeOnNoConsumers = Boolean.parseBoolean(item.getNodeValue());
} else if (item.getNodeName().equals("exclusive")) {
@@ -1130,7 +1132,7 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
}
return new CoreQueueConfiguration().setAddress(address).setName(name).setFilterString(filterString).setDurable(durable).setMaxConsumers(maxConsumers).setPurgeOnNoConsumers(purgeOnNoConsumers).setUser(user)
- .setExclusive(exclusive).setLastValue(lastValue);
+ .setExclusive(exclusive).setLastValue(lastValue).setMaxConsumerConfigured(maxConumserConfigured);
}
protected CoreAddressConfiguration parseAddressConfiguration(final Node node) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/fd3baf1e/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
index cb58a1a..ebe0401 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
@@ -2541,15 +2541,18 @@ public class ActiveMQServerImpl implements ActiveMQServer {
ActiveMQServerLogger.LOGGER.deployQueue(config.getName(), config.getAddress());
AddressSettings as = addressSettingsRepository.getMatch(config.getAddress());
// determine if there is an address::queue match; update it if so
+ int maxConsumerAddressSetting = as.getDefaultMaxConsumers();
+ int maxConsumerQueueConfig = config.getMaxConsumers();
+ int maxConsumer = (config.isMaxConsumerConfigured()) ? maxConsumerQueueConfig : maxConsumerAddressSetting;
if (locateQueue(queueName) != null && locateQueue(queueName).getAddress().toString().equals(config.getAddress())) {
- updateQueue(config.getName(), config.getRoutingType(), config.getMaxConsumers(), config.getPurgeOnNoConsumers(),
+ updateQueue(config.getName(), config.getRoutingType(), maxConsumer, config.getPurgeOnNoConsumers(),
config.isExclusive() == null ? as.isDefaultExclusiveQueue() : config.isExclusive());
} else {
// if the address::queue doesn't exist then create it
try {
createQueue(SimpleString.toSimpleString(config.getAddress()), config.getRoutingType(),
queueName, SimpleString.toSimpleString(config.getFilterString()), SimpleString.toSimpleString(config.getUser()),
- config.isDurable(),false,false,false,false,config.getMaxConsumers(),config.getPurgeOnNoConsumers(),
+ config.isDurable(),false,false,false,false,maxConsumer,config.getPurgeOnNoConsumers(),
config.isExclusive() == null ? as.isDefaultExclusiveQueue() : config.isExclusive(),
config.isLastValue() == null ? as.isDefaultLastValueQueue() : config.isLastValue(), true);
} catch (ActiveMQQueueExistsException e) {