diff --git a/micrometer/src/main/java/feign/micrometer/MicrometerCapability.java b/micrometer/src/main/java/feign/micrometer/MicrometerCapability.java index 55b0703852..9dc29c1b9c 100644 --- a/micrometer/src/main/java/feign/micrometer/MicrometerCapability.java +++ b/micrometer/src/main/java/feign/micrometer/MicrometerCapability.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 The Feign Authors + * Copyright 2012-2024 The Feign Authors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at @@ -22,9 +22,14 @@ import io.micrometer.core.instrument.Clock; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Metrics; +import io.micrometer.core.instrument.Tag; import io.micrometer.core.instrument.simple.SimpleConfig; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + public class MicrometerCapability implements Capability { private final MeterRegistry meterRegistry; @@ -38,6 +43,17 @@ public MicrometerCapability(MeterRegistry meterRegistry) { this.meterRegistry = meterRegistry; } + public MicrometerCapability(MeterRegistry meterRegistry, List tagsList) { + meterRegistry.config().commonTags(tagsList); + this.meterRegistry = meterRegistry; + } + + public MicrometerCapability(MeterRegistry meterRegistry, Map tagsMap) { + List tagsList = mapTags(tagsMap); + meterRegistry.config().commonTags(tagsList); + this.meterRegistry = meterRegistry; + } + @Override public Client enrich(Client client) { return new MeteredClient(client, meterRegistry); @@ -62,4 +78,10 @@ public Decoder enrich(Decoder decoder) { public InvocationHandlerFactory enrich(InvocationHandlerFactory invocationHandlerFactory) { return new MeteredInvocationHandleFactory(invocationHandlerFactory, meterRegistry); } + + private List mapTags(Map tags) { + return tags.keySet().stream() + .map(tagKey -> Tag.of(tagKey, tags.get(tagKey))) + .collect(Collectors.toList()); + } }