This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new ed9270f NO-JIRA Fix small ActiveMQServerControl api break with 2.6.4
new 6c5e90a This closes #2621
ed9270f is described below
commit ed9270fc799c2034e7e4c62798c6120b8249edaf
Author: Michael André Pearce <[email protected]>
AuthorDate: Tue Apr 16 14:28:37 2019 +0100
NO-JIRA Fix small ActiveMQServerControl api break with 2.6.4
In adding auto-delete queue level feature, its been noticed as some feature
bits were added during hot fix branch, that there's api break with the 2.6.x
hotfix branch.
This addresses that by fixing this in 2.7.x
---
.../api/core/management/ActiveMQServerControl.java | 41 ++++++++++++++++++++++
.../management/impl/ActiveMQServerControlImpl.java | 40 +++++++++++++++++++++
.../ActiveMQServerControlUsingCoreTest.java | 5 +++
3 files changed, 86 insertions(+)
diff --git
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
index d93fef2..2002935 100644
---
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
+++
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
@@ -605,6 +605,47 @@ public interface ActiveMQServerControl {
@Parameter(name = "nonDestructive", desc = "If the queue
is non-destructive") boolean nonDestructive,
@Parameter(name = "consumersBeforeDispatch", desc =
"Number of consumers needed before dispatch can start") int
consumersBeforeDispatch,
@Parameter(name = "delayBeforeDispatch", desc = "Delay
to wait before dispatching if number of consumers before dispatch is not met")
long delayBeforeDispatch,
+ @Parameter(name = "autoCreateAddress", desc = "Create an
address with default values should a matching address not be found") boolean
autoCreateAddress) throws Exception;
+
+
+ /**
+ * Create a queue.
+ * <br>
+ * If {@code address} is {@code null} it will be defaulted to {@code name}.
+ * <br>
+ * This method throws a {@link
org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception
if the queue already exits.
+ *
+ * @param address address to bind the queue to
+ * @param routingType the routing type used for this address, {@code
MULTICAST} or {@code ANYCAST}
+ * @param name name of the queue
+ * @param filterStr filter of the queue
+ * @param durable is the queue durable?
+ * @param maxConsumers the maximum number of consumers allowed on
this queue at any one time
+ * @param purgeOnNoConsumers delete this queue when the last consumer
disconnects
+ * @param exclusive if the queue should route exclusively to one consumer
+ * @param lastValue use last-value semantics
+ * @param consumersBeforeDispatch number of consumers needed before
dispatch can start
+ * @param delayBeforeDispatch delay to wait before dispatching if number of
consumers before dispatch is not met
+ * @param autoCreateAddress create an address with default values should a
matching address not be found
+ * @return a textual summary of the queue
+ * @throws Exception
+ */
+ @Operation(desc = "Create a queue", impact = MBeanOperationInfo.ACTION)
+ String createQueue(@Parameter(name = "address", desc = "Address of the
queue") String address,
+ @Parameter(name = "routingType", desc = "The routing
type used for this address, MULTICAST or ANYCAST") String routingType,
+ @Parameter(name = "name", desc = "Name of the queue")
String name,
+ @Parameter(name = "filter", desc = "Filter of the
queue") String filterStr,
+ @Parameter(name = "durable", desc = "Is the queue
durable?") boolean durable,
+ @Parameter(name = "maxConsumers", desc = "The maximum
number of consumers allowed on this queue at any one time") int maxConsumers,
+ @Parameter(name = "purgeOnNoConsumers", desc = "Delete
this queue when the last consumer disconnects") boolean purgeOnNoConsumers,
+ @Parameter(name = "exclusive", desc = "If the queue
should route exclusively to one consumer") boolean exclusive,
+ @Parameter(name = "groupRebalance", desc = "If the queue
should rebalance groups when a consumer is added") boolean groupRebalance,
+ @Parameter(name = "groupBuckets", desc = "Number of
buckets that should be used for message groups, -1 (default) is unlimited, and
groups by raw key instead") int groupBuckets,
+ @Parameter(name = "lastValue", desc = "Use last-value
semantics") boolean lastValue,
+ @Parameter(name = "lastValueKey", desc = "Use the
specified property key for the last value") String lastValueKey,
+ @Parameter(name = "nonDestructive", desc = "If the queue
is non-destructive") boolean nonDestructive,
+ @Parameter(name = "consumersBeforeDispatch", desc =
"Number of consumers needed before dispatch can start") int
consumersBeforeDispatch,
+ @Parameter(name = "delayBeforeDispatch", desc = "Delay
to wait before dispatching if number of consumers before dispatch is not met")
long delayBeforeDispatch,
@Parameter(name = "autoDelete", desc = "If the queue
should be deleted once no consumers") boolean autoDelete,
@Parameter(name = "autoDeleteDelay", desc = "How long to
wait (in milliseconds) before deleting auto-created queues after the queue has
0 consumers") long autoDeleteDelay,
@Parameter(name = "autoDeleteMessageCount", desc = "The
message count the queue must be at or below before it can be evaluated to be
auto deleted, 0 waits until empty queue (default) and -1 disables this check")
long autoDeleteMessageCount,
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
index d14a358..042279c 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
@@ -978,6 +978,46 @@ public class ActiveMQServerControlImpl extends
AbstractControl implements Active
boolean nonDestructive,
int consumersBeforeDispatch,
long delayBeforeDispatch,
+ boolean autoCreateAddress) throws Exception {
+ AddressSettings addressSettings =
server.getAddressSettingsRepository().getMatch(address == null ? name :
address);
+ return createQueue(
+ address,
+ routingType,
+ name,
+ filterStr,
+ durable,
+ maxConsumers,
+ purgeOnNoConsumers,
+ exclusive,
+ groupRebalance,
+ groupBuckets,
+ lastValue,
+ lastValueKey,
+ nonDestructive,
+ consumersBeforeDispatch,
+ delayBeforeDispatch,
+ addressSettings.isAutoDeleteCreatedQueues(),
+ addressSettings.getAutoDeleteQueuesDelay(),
+ addressSettings.getAutoDeleteQueuesMessageCount(),
+ autoCreateAddress);
+ }
+
+ @Override
+ public String createQueue(String address,
+ String routingType,
+ String name,
+ String filterStr,
+ boolean durable,
+ int maxConsumers,
+ boolean purgeOnNoConsumers,
+ boolean exclusive,
+ boolean groupRebalance,
+ int groupBuckets,
+ boolean lastValue,
+ String lastValueKey,
+ boolean nonDestructive,
+ int consumersBeforeDispatch,
+ long delayBeforeDispatch,
boolean autoDelete,
long autoDeleteDelay,
long autoDeleteMessageCount,
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
index e77b96d..4e4cfb7 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
@@ -205,6 +205,11 @@ public class ActiveMQServerControlUsingCoreTest extends
ActiveMQServerControlTes
}
@Override
+ public String createQueue(String address, String routingType, String
name, String filter, boolean durable, int maxConsumers, boolean
purgeOnNoConsumers, boolean exclusive, boolean groupRebalance, int
groupBuckets, boolean lastValue, String lastValueKey, boolean nonDestructive,
int consumersBeforeDispatch, long delayBeforeDispatch, boolean
autoCreateAddress) throws Exception {
+ return (String) proxy.invokeOperation("createQueue", address,
routingType, name, filter, durable, maxConsumers, purgeOnNoConsumers,
exclusive, groupRebalance, groupBuckets, lastValue, lastValueKey,
nonDestructive, consumersBeforeDispatch, delayBeforeDispatch,
autoCreateAddress);
+ }
+
+ @Override
public String createQueue(String address, String routingType, String
name, String filter, boolean durable, int maxConsumers, boolean
purgeOnNoConsumers, boolean exclusive, boolean groupRebalance, int
groupBuckets, boolean lastValue, String lastValueKey, boolean nonDestructive,
int consumersBeforeDispatch, long delayBeforeDispatch, boolean autoDelete, long
autoDeleteDelay, long autoDeleteMessageCount, boolean autoCreateAddress) throws
Exception {
return (String) proxy.invokeOperation("createQueue", address,
routingType, name, filter, durable, maxConsumers, purgeOnNoConsumers,
exclusive, groupRebalance, groupBuckets, lastValue, lastValueKey,
nonDestructive, consumersBeforeDispatch, delayBeforeDispatch,
autoCreateAddress);
}