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);
    }

Reply via email to