Skip to content

Commit 996b1f5

Browse files
Kuvaldiskdavisk6
andauthored
Support metric names customization (#1311)
Co-authored-by: Kevin Davis <kdavisk6@gmail.com>
1 parent c263166 commit 996b1f5

File tree

6 files changed

+62
-10
lines changed

6 files changed

+62
-10
lines changed

micrometer/src/main/java/feign/micrometer/FeignMetricName.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,32 @@
2525
import io.micrometer.core.instrument.Tag;
2626
import io.micrometer.core.instrument.Tags;
2727

28-
public final class FeignMetricName {
28+
public final class FeignMetricName implements MetricName {
2929

3030
private final Class<?> meteredComponent;
3131

3232
public FeignMetricName(Class<?> meteredComponent) {
3333
this.meteredComponent = meteredComponent;
3434
}
3535

36+
@Override
3637
public String name(String suffix) {
3738
return name()
3839
// any separator, so naming convention can change it
3940
+ "." + suffix;
4041
}
4142

43+
@Override
4244
public String name() {
4345
return meteredComponent.getName();
4446
}
4547

48+
@Override
4649
public Tags tag(MethodMetadata methodMetadata, Target<?> target, Tag... tags) {
4750
return tag(methodMetadata.targetType(), methodMetadata.method(), target.url(), tags);
4851
}
4952

53+
@Override
5054
public Tags tag(Class<?> targetType, Method method, String url, Tag... extraTags) {
5155
List<Tag> tags = new ArrayList<>();
5256
tags.add(Tag.of("client", targetType.getName()));

micrometer/src/main/java/feign/micrometer/MeteredClient.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,16 @@ public class MeteredClient implements Client {
2828

2929
private final Client client;
3030
private final MeterRegistry meterRegistry;
31-
private final FeignMetricName metricName;
31+
private final MetricName metricName;
3232

3333
public MeteredClient(Client client, MeterRegistry meterRegistry) {
34+
this(client, meterRegistry, new FeignMetricName(Client.class));
35+
}
36+
37+
public MeteredClient(Client client, MeterRegistry meterRegistry, MetricName metricName) {
3438
this.client = client;
3539
this.meterRegistry = meterRegistry;
36-
this.metricName = new FeignMetricName(Client.class);
40+
this.metricName = metricName;
3741
}
3842

3943
@Override

micrometer/src/main/java/feign/micrometer/MeteredDecoder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,16 @@ public class MeteredDecoder implements Decoder {
3232

3333
private final Decoder decoder;
3434
private final MeterRegistry meterRegistry;
35-
private final FeignMetricName metricName;
35+
private final MetricName metricName;
3636

3737
public MeteredDecoder(Decoder decoder, MeterRegistry meterRegistry) {
38+
this(decoder, meterRegistry, new FeignMetricName(Decoder.class));
39+
}
40+
41+
public MeteredDecoder(Decoder decoder, MeterRegistry meterRegistry, MetricName metricName) {
3842
this.decoder = decoder;
3943
this.meterRegistry = meterRegistry;
40-
this.metricName = new FeignMetricName(Decoder.class);
44+
this.metricName = metricName;
4145
}
4246

4347
@Override

micrometer/src/main/java/feign/micrometer/MeteredEncoder.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
package feign.micrometer;
1515

1616

17-
import java.lang.reflect.Type;
1817
import feign.RequestTemplate;
1918
import feign.codec.EncodeException;
2019
import feign.codec.Encoder;
2120
import io.micrometer.core.instrument.MeterRegistry;
21+
import java.lang.reflect.Type;
2222

2323
/**
2424
* Warp feign {@link Encoder} with metrics.
@@ -27,12 +27,16 @@ public class MeteredEncoder implements Encoder {
2727

2828
private final Encoder encoder;
2929
private final MeterRegistry meterRegistry;
30-
private final FeignMetricName metricName;
30+
private final MetricName metricName;
3131

3232
public MeteredEncoder(Encoder encoder, MeterRegistry meterRegistry) {
33+
this(encoder, meterRegistry, new FeignMetricName(Encoder.class));
34+
}
35+
36+
public MeteredEncoder(Encoder encoder, MeterRegistry meterRegistry, MetricName metricName) {
3337
this.encoder = encoder;
3438
this.meterRegistry = meterRegistry;
35-
this.metricName = new FeignMetricName(Encoder.class);
39+
this.metricName = metricName;
3640
}
3741

3842
@Override

micrometer/src/main/java/feign/micrometer/MeteredInvocationHandleFactory.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,18 @@ public class MeteredInvocationHandleFactory implements InvocationHandlerFactory
4343

4444
private final MeterRegistry meterRegistry;
4545

46-
private final FeignMetricName metricName;
46+
private final MetricName metricName;
4747

4848
public MeteredInvocationHandleFactory(InvocationHandlerFactory invocationHandler,
4949
MeterRegistry meterRegistry) {
50+
this(invocationHandler, meterRegistry, new FeignMetricName(Feign.class));
51+
}
52+
53+
public MeteredInvocationHandleFactory(InvocationHandlerFactory invocationHandler,
54+
MeterRegistry meterRegistry, MetricName metricName) {
5055
this.invocationHandler = invocationHandler;
5156
this.meterRegistry = meterRegistry;
52-
this.metricName = new FeignMetricName(Feign.class);
57+
this.metricName = metricName;
5358
}
5459

5560
@Override
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* Copyright 2012-2020 The Feign Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5+
* in compliance with the License. You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software distributed under the License
10+
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11+
* or implied. See the License for the specific language governing permissions and limitations under
12+
* the License.
13+
*/
14+
package feign.micrometer;
15+
16+
import feign.MethodMetadata;
17+
import feign.Target;
18+
import io.micrometer.core.instrument.Tag;
19+
import io.micrometer.core.instrument.Tags;
20+
import java.lang.reflect.Method;
21+
22+
public interface MetricName {
23+
24+
String name();
25+
26+
String name(String suffix);
27+
28+
Tags tag(MethodMetadata methodMetadata, Target<?> target, Tag... tags);
29+
30+
Tags tag(Class<?> targetType, Method method, String url, Tag... extraTags);
31+
}

0 commit comments

Comments
 (0)