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 2022/10/11 17:16:52 UTC
[activemq-artemis] branch main updated: ARTEMIS-4022 add auto-delete queue attribute to management
This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/main by this push:
new 5343c97c7d ARTEMIS-4022 add auto-delete queue attribute to management
5343c97c7d is described below
commit 5343c97c7ded6fb4d88f22b88d0905aefba04718
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Thu Sep 29 11:03:32 2022 -0500
ARTEMIS-4022 add auto-delete queue attribute to management
---
.../apache/activemq/artemis/logs/AuditLogger.java | 7 ++++++
.../artemis/api/core/management/QueueControl.java | 6 +++++
.../src/main/webapp/plugin/js/components/queues.js | 9 ++++---
.../core/management/impl/QueueControlImpl.java | 16 ++++++++++++
.../core/management/impl/view/QueueField.java | 3 ++-
.../core/management/impl/view/QueueView.java | 3 ++-
.../management/ActiveMQServerControlTest.java | 1 +
.../integration/management/QueueControlTest.java | 29 ++++++++++++++++++++++
.../management/QueueControlUsingCoreTest.java | 5 ++++
9 files changed, 74 insertions(+), 5 deletions(-)
diff --git a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
index a48aee2500..961cb1c8f8 100644
--- a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
+++ b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
@@ -2632,4 +2632,11 @@ public interface AuditLogger {
@LogMessage(id = 601765, value = "User {} is getting status on target resource: {}", level = LogMessage.Level.INFO)
void getStatus(String user, Object source);
+
+ static void isAutoDelete(Object source) {
+ BASE_LOGGER.isAutoDelete(getCaller(), source);
+ }
+
+ @LogMessage(id = 601766, value = "User {} is getting auto-delete property on target resource: {}", level = LogMessage.Level.INFO)
+ void isAutoDelete(String user, Object source);
}
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
index 98548438c1..eecbcd904c 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
@@ -782,4 +782,10 @@ public interface QueueControl {
*/
@Operation(desc = "Immediately deliver the scheduled message with the specified message ID", impact = MBeanOperationInfo.ACTION)
void deliverScheduledMessage(@Parameter(name = "messageID", desc = "ID of the message to deliver") long messageId) throws Exception;
+
+ /**
+ * Returns whether this queue is available for auto deletion.
+ */
+ @Attribute(desc = "whether this queue is available for auto deletion")
+ boolean isAutoDelete();
}
diff --git a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/components/queues.js b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/components/queues.js
index 0b7a73f1ee..72570de551 100644
--- a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/components/queues.js
+++ b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/components/queues.js
@@ -103,7 +103,8 @@ var Artemis;
{name: "Queue Enabled", visible: false},
{name: "Ring Size", visible: false},
{name: "Consumers Before Dispatch", visible: false},
- {name: "Delay Before Dispatch", visible: false}
+ {name: "Delay Before Dispatch", visible: false},
+ {name: "Auto Delete", visible: false}
]
};
@@ -140,7 +141,8 @@ var Artemis;
{id: 'deliveringCount', name: 'Delivering Count'},
{id: 'paused', name: 'Paused'},
{id: 'temporary', name: 'Temporary'},
- {id: 'autoCreated', name: 'Auto Created'}
+ {id: 'autoCreated', name: 'Auto Created'},
+ {id: 'autoDelete', name: 'Auto Delete'}
],
operationOptions: [
{id: 'EQUALS', name: 'Equals'},
@@ -215,7 +217,8 @@ var Artemis;
{ header: 'Enabled', itemField: 'enabled'},
{ header: 'Ring Size', itemField: 'ringSize'},
{ header: 'Consumers Before Dispatch', itemField: 'consumersBeforeDispatch'},
- { header: 'Delay Before Dispatch', itemField: 'delayBeforeDispatch'}
+ { header: 'Delay Before Dispatch', itemField: 'delayBeforeDispatch'},
+ { header: 'Auto Delete', itemField: 'autoDelete'}
];
ctrl.refresh = function () {
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
index c78111ba57..1ffe4bcfd2 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
@@ -1994,6 +1994,22 @@ public class QueueControlImpl extends AbstractControl implements QueueControl {
}
}
+ @Override
+ public boolean isAutoDelete() {
+
+ if (AuditLogger.isBaseLoggingEnabled()) {
+ AuditLogger.isAutoDelete(queue);
+ }
+ checkStarted();
+
+ clearIO();
+ try {
+ return queue.isAutoDelete();
+ } finally {
+ blockOnIO();
+ }
+ }
+
private void checkStarted() {
if (!server.getPostOffice().isStarted()) {
throw new IllegalStateException("Broker is not started. Queue can not be managed yet");
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java
index 6bd4333ae8..12105c4e0f 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java
@@ -52,7 +52,8 @@ public enum QueueField {
ENABLED("enabled"),
RING_SIZE("ringSize"),
CONSUMERS_BEFORE_DISPATCH("consumersBeforeDispatch"),
- DELAY_BEFORE_DISPATCH("delayBeforeDispatch");
+ DELAY_BEFORE_DISPATCH("delayBeforeDispatch"),
+ AUTO_DELETE("autoDelete");
private static final Map<String, QueueField> lookup = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
index cf5f303b55..e346e71b73 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
@@ -76,7 +76,8 @@ public class QueueView extends ActiveMQAbstractView<QueueControl> {
.add(QueueField.ENABLED.getName(), toString(queue.isEnabled()))
.add(QueueField.RING_SIZE.getName(), toString(queue.getRingSize()))
.add(QueueField.CONSUMERS_BEFORE_DISPATCH.getName(), toString(queue.getConsumersBeforeDispatch()))
- .add(QueueField.DELAY_BEFORE_DISPATCH.getName(), toString(queue.getDelayBeforeDispatch()));
+ .add(QueueField.DELAY_BEFORE_DISPATCH.getName(), toString(queue.getDelayBeforeDispatch()))
+ .add(QueueField.AUTO_DELETE.getName(), toString(q.isAutoDelete()));
return obj;
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 62e888e7df..9f065ea1c9 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -3008,6 +3008,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
Assert.assertEquals("groupRebalance", "false", array.getJsonObject(0).getString("groupRebalance"));
Assert.assertEquals("groupBuckets", "-1", array.getJsonObject(0).getString("groupBuckets"));
Assert.assertEquals("groupFirstKey", "", array.getJsonObject(0).getString("groupFirstKey"));
+ Assert.assertEquals("autoDelete", "false", array.getJsonObject(0).getString("autoDelete"));
}
@Test
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
index b502a708aa..123a143a13 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
@@ -268,6 +268,35 @@ public class QueueControlTest extends ManagementTestBase {
session.deleteQueue(queue);
}
+ @Test
+ public void testAutoDeleteAttribute() throws Exception {
+ SimpleString address = RandomUtil.randomSimpleString();
+ SimpleString queue = RandomUtil.randomSimpleString();
+
+ session.createQueue(new QueueConfiguration(queue).setAddress(address));
+
+ QueueControl queueControl = createManagementControl(address, queue);
+ Assert.assertFalse(queueControl.isAutoDelete());
+
+ session.deleteQueue(queue);
+
+ session.createQueue(new QueueConfiguration(queue).setAddress(address).setAutoDelete(true));
+
+ queueControl = createManagementControl(address, queue);
+ Assert.assertTrue(queueControl.isAutoDelete());
+
+ session.deleteQueue(queue);
+
+ server.getAddressSettingsRepository().addMatch(address.toString(), new AddressSettings().setAutoDeleteQueues(true));
+
+ session.createQueue(new QueueConfiguration(queue).setAddress(address).setAutoCreated(true));
+
+ queueControl = createManagementControl(address, queue);
+ Assert.assertTrue(queueControl.isAutoDelete());
+
+ session.deleteQueue(queue);
+ }
+
@Test
public void testGroupAttributes() throws Exception {
SimpleString address = RandomUtil.randomSimpleString();
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java
index a75a8e0764..6bbcb160b8 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java
@@ -76,6 +76,11 @@ public class QueueControlUsingCoreTest extends QueueControlTest {
}
}
+ @Override
+ public boolean isAutoDelete() {
+ return (Boolean) proxy.retrieveAttributeValue("autoDelete");
+ }
+
@Override
public void resetAllGroups() {
try {