Skip to content

Commit c27b7b6

Browse files
brusdevjbertram
authored andcommitted
ARTEMIS-4456 Register metrics plugin
1 parent b8bb560 commit c27b7b6

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3367,6 +3367,10 @@ synchronized boolean initialisePart1(boolean scalingDown) throws Exception {
33673367
registerBrokerPlugins(getBrokerPlugins());
33683368
}
33693369

3370+
if (configuration.getMetricsConfiguration() != null && configuration.getMetricsConfiguration().getPlugin() != null) {
3371+
configuration.getMetricsConfiguration().getPlugin().registered(this);
3372+
}
3373+
33703374
return true;
33713375
}
33723376

artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/ActiveMQMetricsPlugin.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,19 @@
2020
import java.util.Map;
2121

2222
import io.micrometer.core.instrument.MeterRegistry;
23+
import org.apache.activemq.artemis.core.server.ActiveMQServer;
2324

2425
public interface ActiveMQMetricsPlugin extends Serializable {
2526

2627
ActiveMQMetricsPlugin init(Map<String, String> options);
2728

2829
MeterRegistry getRegistry();
30+
31+
/**
32+
* The plugin has been registered with the server
33+
*
34+
* @param server The ActiveMQServer the plugin has been registered to
35+
*/
36+
default void registered(ActiveMQServer server) {
37+
}
2938
}

artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/plugins/SimpleMetricsPlugin.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import io.micrometer.core.instrument.MeterRegistry;
2222
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
23+
import org.apache.activemq.artemis.core.server.ActiveMQServer;
2324
import org.apache.activemq.artemis.core.server.metrics.ActiveMQMetricsPlugin;
2425

2526
/**
@@ -31,6 +32,8 @@ public class SimpleMetricsPlugin implements ActiveMQMetricsPlugin {
3132

3233
private Map<String, String> options;
3334

35+
private ActiveMQServer server;
36+
3437
@Override
3538
public ActiveMQMetricsPlugin init(Map<String, String> options) {
3639
this.meterRegistry = new SimpleMeterRegistry();
@@ -43,7 +46,16 @@ public MeterRegistry getRegistry() {
4346
return meterRegistry;
4447
}
4548

49+
@Override
50+
public void registered(ActiveMQServer server) {
51+
this.server = server;
52+
}
53+
4654
public Map<String, String> getOptions() {
4755
return options;
4856
}
57+
58+
public ActiveMQServer getServer() {
59+
return server;
60+
}
4961
}

tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/MetricsPluginTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,12 @@ public void testMessageCountWithPaging() throws Exception {
270270
checkMetric(getMetrics(), "artemis.message.count", "queue", queueName, Double.valueOf(messageCount * 2));
271271
}
272272

273+
@Test
274+
public void testMetricsPluginRegistration() {
275+
assertEquals(SimpleMetricsPlugin.class, server.getConfiguration().getMetricsConfiguration().getPlugin().getClass());
276+
assertEquals(server, ((SimpleMetricsPlugin)server.getConfiguration().getMetricsConfiguration().getPlugin()).getServer());
277+
}
278+
273279
public Map<Meter.Id, Double> getMetrics() {
274280
return getMetrics(server);
275281
}

0 commit comments

Comments
 (0)