This is an automated email from the ASF dual-hosted git repository.
jbertram 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 c27b7b65c7 ARTEMIS-4456 Register metrics plugin
c27b7b65c7 is described below
commit c27b7b65c782de1628c56f4afb4442616d9747bf
Author: Domenico Francesco Bruscino <[email protected]>
AuthorDate: Tue Oct 3 07:00:54 2023 +0200
ARTEMIS-4456 Register metrics plugin
---
.../artemis/core/server/impl/ActiveMQServerImpl.java | 4 ++++
.../artemis/core/server/metrics/ActiveMQMetricsPlugin.java | 9 +++++++++
.../core/server/metrics/plugins/SimpleMetricsPlugin.java | 12 ++++++++++++
.../artemis/tests/integration/plugin/MetricsPluginTest.java | 6 ++++++
4 files changed, 31 insertions(+)
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 cff2e68fe9..82c88f4bf6 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
@@ -3367,6 +3367,10 @@ public class ActiveMQServerImpl implements
ActiveMQServer {
registerBrokerPlugins(getBrokerPlugins());
}
+ if (configuration.getMetricsConfiguration() != null &&
configuration.getMetricsConfiguration().getPlugin() != null) {
+ configuration.getMetricsConfiguration().getPlugin().registered(this);
+ }
+
return true;
}
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/ActiveMQMetricsPlugin.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/ActiveMQMetricsPlugin.java
index 8cdf1542b8..9497f127d7 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/ActiveMQMetricsPlugin.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/ActiveMQMetricsPlugin.java
@@ -20,10 +20,19 @@ import java.io.Serializable;
import java.util.Map;
import io.micrometer.core.instrument.MeterRegistry;
+import org.apache.activemq.artemis.core.server.ActiveMQServer;
public interface ActiveMQMetricsPlugin extends Serializable {
ActiveMQMetricsPlugin init(Map<String, String> options);
MeterRegistry getRegistry();
+
+ /**
+ * The plugin has been registered with the server
+ *
+ * @param server The ActiveMQServer the plugin has been registered to
+ */
+ default void registered(ActiveMQServer server) {
+ }
}
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/plugins/SimpleMetricsPlugin.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/plugins/SimpleMetricsPlugin.java
index 94d889566a..bbe98a70bc 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/plugins/SimpleMetricsPlugin.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/plugins/SimpleMetricsPlugin.java
@@ -20,6 +20,7 @@ import java.util.Map;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
+import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.metrics.ActiveMQMetricsPlugin;
/**
@@ -31,6 +32,8 @@ public class SimpleMetricsPlugin implements
ActiveMQMetricsPlugin {
private Map<String, String> options;
+ private ActiveMQServer server;
+
@Override
public ActiveMQMetricsPlugin init(Map<String, String> options) {
this.meterRegistry = new SimpleMeterRegistry();
@@ -43,7 +46,16 @@ public class SimpleMetricsPlugin implements
ActiveMQMetricsPlugin {
return meterRegistry;
}
+ @Override
+ public void registered(ActiveMQServer server) {
+ this.server = server;
+ }
+
public Map<String, String> getOptions() {
return options;
}
+
+ public ActiveMQServer getServer() {
+ return server;
+ }
}
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/MetricsPluginTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/MetricsPluginTest.java
index 369d32448d..74678c15b3 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/MetricsPluginTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/MetricsPluginTest.java
@@ -270,6 +270,12 @@ public class MetricsPluginTest extends ActiveMQTestBase {
checkMetric(getMetrics(), "artemis.message.count", "queue", queueName,
Double.valueOf(messageCount * 2));
}
+ @Test
+ public void testMetricsPluginRegistration() {
+ assertEquals(SimpleMetricsPlugin.class,
server.getConfiguration().getMetricsConfiguration().getPlugin().getClass());
+ assertEquals(server,
((SimpleMetricsPlugin)server.getConfiguration().getMetricsConfiguration().getPlugin()).getServer());
+ }
+
public Map<Meter.Id, Double> getMetrics() {
return getMetrics(server);
}