/
ApplicationConfiguration.java
53 lines (43 loc) · 1.69 KB
/
ApplicationConfiguration.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.github.benschw.consuldemo;
import com.codahale.metrics.MetricRegistry;
import com.github.benschw.springboot.srvloadbalancer.*;
import com.github.benschw.springboot.metrics.CodahaleMetricsAdapter;
import com.github.benschw.springboot.metrics.MetricNamer;
import com.ryantenney.metrics.spring.config.annotation.EnableMetrics;
import com.spotify.dns.DnsSrvResolver;
import com.spotify.dns.DnsSrvResolvers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.endpoint.PublicMetrics;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableMetrics
public class ApplicationConfiguration {
@Value("${service.name:unknown}")
private String serviceName;
@Value("${service.trimString:unknown}")
private String trimString;
@Autowired
MetricRegistry metricsRegistry;
@Bean
public PublicMetrics publicMetrics() {
MetricNamer metricNamer = new MetricNamer(serviceName, trimString);
return new CodahaleMetricsAdapter(metricNamer, metricsRegistry);
}
@Bean
public LoadBalancer loadBalancer() {
LoadBalancingStrategy strategy = new RoundRobinLoadBalancingStrategy();
DnsSrvResolver resolver = DnsSrvResolvers.newBuilder()
.cachingLookups(true)
.retainingDataOnFailures(true)
.metered(new CodahaleSpringBootReporter(metricsRegistry))
.dnsLookupTimeoutMillis(1000)
.build();
return new LoadBalancer(strategy, resolver);
}
}