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 2021/12/14 13:52:57 UTC
[activemq-artemis] branch main updated: ARTEMIS-3601 expose acceptors via 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 fac7f16 ARTEMIS-3601 expose acceptors via management
fac7f16 is described below
commit fac7f1692ad6f7f752c3d2da5d83561e7c074c49
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Mon Dec 13 21:48:03 2021 -0600
ARTEMIS-3601 expose acceptors via management
---
.../apache/activemq/artemis/logs/AuditLogger.java | 15 ++++++++++
.../api/core/management/ActiveMQServerControl.java | 12 ++++++++
.../management/impl/ActiveMQServerControlImpl.java | 34 ++++++++++++++++++----
.../management/ActiveMQServerControlTest.java | 29 ++++++++++++++++++
.../ActiveMQServerControlUsingCoreTest.java | 10 +++++++
5 files changed, 95 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 5878295..2cc209c 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
@@ -2910,4 +2910,19 @@ public interface AuditLogger extends BasicLogger {
@Message(id = 601755, value = "User {0} is unblocking target resource: {1}", format = Message.Format.MESSAGE_FORMAT)
void unBlock(String user, Object source);
+ static void getAcceptors(Object source) {
+ BASE_LOGGER.getAcceptors(getCaller(), source);
+ }
+
+ @LogMessage(level = Logger.Level.INFO)
+ @Message(id = 601756, value = "User {0} is getting acceptors on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT)
+ void getAcceptors(String user, Object source, Object... args);
+
+ static void getAcceptorsAsJSON(Object source) {
+ BASE_LOGGER.getAcceptorsAsJSON(getCaller(), source);
+ }
+
+ @LogMessage(level = Logger.Level.INFO)
+ @Message(id = 601757, value = "User {0} is getting acceptors as json on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT)
+ void getAcceptorsAsJSON(String user, Object source, Object... args);
}
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 59b142c..496bf62 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
@@ -409,6 +409,18 @@ public interface ActiveMQServerControl {
String getConnectorsAsJSON() throws Exception;
/**
+ * Returns the acceptors configured for this server.
+ */
+ @Attribute(desc = "Connectors configured for this server")
+ Object[] getAcceptors() throws Exception;
+
+ /**
+ * Returns the acceptors configured for this server using JSON serialization.
+ */
+ @Attribute(desc = "Acceptors configured for this server using JSON serialization")
+ String getAcceptorsAsJSON() throws Exception;
+
+ /**
* Returns the number of addresses created on this server.
*/
@Attribute(desc = "Number of addresses created on this server")
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 2e0520f..841eac9 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
@@ -2740,16 +2740,26 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
if (AuditLogger.isBaseLoggingEnabled()) {
AuditLogger.getConnectors(this.server);
}
+ return getNetworkConfigs(configuration.getConnectorConfigurations().values());
+ }
+
+ @Override
+ public Object[] getAcceptors() throws Exception {
+ if (AuditLogger.isBaseLoggingEnabled()) {
+ AuditLogger.getAcceptors(this.server);
+ }
+ return getNetworkConfigs(configuration.getAcceptorConfigurations());
+ }
+
+ private Object[] getNetworkConfigs(Collection<TransportConfiguration> configs) throws Exception {
checkStarted();
clearIO();
try {
- Collection<TransportConfiguration> connectorConfigurations = configuration.getConnectorConfigurations().values();
-
- Object[] ret = new Object[connectorConfigurations.size()];
+ Object[] ret = new Object[configs.size()];
int i = 0;
- for (TransportConfiguration config : connectorConfigurations) {
+ for (TransportConfiguration config : configs) {
Object[] tc = new Object[3];
tc[0] = config.getName();
@@ -2769,13 +2779,27 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
if (AuditLogger.isBaseLoggingEnabled()) {
AuditLogger.getConnectorsAsJSON(this.server);
}
+
+ return getNetworkConfigsAsJSON(configuration.getConnectorConfigurations().values());
+ }
+
+ @Override
+ public String getAcceptorsAsJSON() throws Exception {
+ if (AuditLogger.isBaseLoggingEnabled()) {
+ AuditLogger.getAcceptorsAsJSON(this.server);
+ }
+
+ return getNetworkConfigsAsJSON(configuration.getAcceptorConfigurations());
+ }
+
+ private String getNetworkConfigsAsJSON(Collection<TransportConfiguration> configs) throws Exception {
checkStarted();
clearIO();
try {
JsonArrayBuilder array = JsonLoader.createArrayBuilder();
- for (TransportConfiguration config : configuration.getConnectorConfigurations().values()) {
+ for (TransportConfiguration config : configs) {
array.add(config.toJson());
}
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 8cda6cc..32e6d5a 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
@@ -240,6 +240,21 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
@Test
+ public void testGetAcceptors() throws Exception {
+ ActiveMQServerControl serverControl = createManagementControl();
+
+ Object[] acceptors = serverControl.getAcceptors();
+ Assert.assertNotNull(acceptors);
+ Assert.assertEquals(2, acceptors.length);
+
+ for (int i = 0; i < acceptors.length; i++) {
+ Object[] acceptor = (Object[]) acceptors[i];
+ String name = (String) acceptor[0];
+ assertTrue(name.equals("netty") || name.equals("invm"));
+ }
+ }
+
+ @Test
public void testIsReplicaSync() throws Exception {
Assert.assertFalse(createManagementControl().isReplicaSync());
}
@@ -259,6 +274,20 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
@Test
+ public void testGetAcceptorsAsJSON() throws Exception {
+ ActiveMQServerControl serverControl = createManagementControl();
+
+ String jsonString = serverControl.getAcceptorsAsJSON();
+ Assert.assertNotNull(jsonString);
+ JsonArray array = JsonUtil.readJsonArray(jsonString);
+ Assert.assertEquals(2, array.size());
+ for (int i = 0; i < array.size(); i++) {
+ String name = ((JsonObject)array.get(i)).getString("name");
+ assertTrue(name.equals("netty") || name.equals("invm"));
+ }
+ }
+
+ @Test
public void testCreateAndDestroyQueue() throws Exception {
SimpleString address = RandomUtil.randomSimpleString();
SimpleString name = RandomUtil.randomSimpleString();
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 a1bd1fc..032e50f 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
@@ -368,6 +368,16 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
}
@Override
+ public Object[] getAcceptors() throws Exception {
+ return (Object[]) proxy.retrieveAttributeValue("acceptors");
+ }
+
+ @Override
+ public String getAcceptorsAsJSON() throws Exception {
+ return (String) proxy.retrieveAttributeValue("acceptorsAsJSON");
+ }
+
+ @Override
public int getAddressCount() {
return (Integer) proxy.retrieveAttributeValue("addressCount", Integer.class);
}