Skip to content

Commit b440584

Browse files
committed
[StubbornJava#90] Add okhttp metrics
1 parent 8e60e06 commit b440584

File tree

5 files changed

+28
-10
lines changed

5 files changed

+28
-10
lines changed

gradle/dependencies.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ ext {
2424
lombok : '1.18.2', // Code gen
2525
sitemapgen4j : '1.0.6', // Sitemap generator for SEO
2626
jbcrypt : '0.4', // BCrypt salted hashing library
27-
27+
okhttpMetrics : '0.4.0', // Metrics for OkHttp
28+
2829
junit : '4.12', // Unit Testing
2930
]
3031
libs = [
3132
okhttp : "com.squareup.okhttp3:okhttp:$versions.okhttp",
3233
okhttpUrlConnection : "com.squareup.okhttp3:okhttp-urlconnection:$versions.okhttp",
34+
okhttpMetrics : "com.raskasa.metrics:metrics-okhttp:$versions.okhttpMetrics",
3335
loggingInterceptor : "com.squareup.okhttp3:logging-interceptor:$versions.okhttp",
3436
jacksonCore : "com.fasterxml.jackson.core:jackson-core:$versions.jackson",
3537
jacksonDatabind : "com.fasterxml.jackson.core:jackson-databind:$versions.jackson",

stubbornjava-common/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ dependencies {
3939
compile libs.jooqCodegen
4040
compile libs.flyway
4141
compile libs.connectorj
42+
compile libs.okhttpMetrics
4243

4344
testCompile libs.junit
4445
testCompile libs.hsqldb

stubbornjava-common/src/main/java/com/stubbornjava/common/HttpClient.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import org.slf4j.Logger;
1919
import org.slf4j.LoggerFactory;
2020

21+
import com.raskasa.metrics.okhttp.InstrumentedOkHttpClients;
22+
2123
import okhttp3.Dispatcher;
2224
import okhttp3.Interceptor;
2325
import okhttp3.Interceptor.Chain;
@@ -56,8 +58,13 @@ public static Interceptor getHeaderInterceptor(String name, String value) {
5658
};
5759
}
5860

61+
public static OkHttpClient wrapWithMetircs(String name, OkHttpClient client) {
62+
return InstrumentedOkHttpClients.create(Metrics.registry(), client, name);
63+
}
64+
5965
// {{start:client}}
6066
private static final OkHttpClient client;
67+
private static final OkHttpClient globalClient;
6168
static {
6269
Dispatcher dispatcher = new Dispatcher();
6370
dispatcher.setMaxRequestsPerHost(15);
@@ -69,15 +76,23 @@ public static Interceptor getHeaderInterceptor(String name, String value) {
6976
.dispatcher(dispatcher)
7077
.addNetworkInterceptor(loggingInterceptor)
7178
.build();
72-
}
7379

74-
;
80+
globalClient = wrapWithMetircs("GlobalClient", baseClientBuilder().build());
81+
}
7582

7683
/*
7784
* Global client that can be shared for common HTTP tasks.
7885
*/
7986
public static OkHttpClient globalClient() {
80-
return client;
87+
return globalClient;
88+
}
89+
90+
/*
91+
* Global client base for extending defaults.
92+
* This is the same as the global client but without metrics enabled yet.
93+
*/
94+
public static OkHttpClient.Builder baseClientBuilder() {
95+
return client.newBuilder();
8196
}
8297
// {{end:client}}
8398

stubbornjava-common/src/main/java/com/stubbornjava/common/MetricsReporters.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ class MetricsReporters {
1313

1414
public static void startReporters(MetricRegistry registry) {
1515
// Graphite reporter to Grafana Cloud
16-
OkHttpClient client = new OkHttpClient.Builder()
17-
//.addNetworkInterceptor(HttpClient.getLoggingInterceptor())
18-
.build();
16+
OkHttpClient client = HttpClient.wrapWithMetircs("GraphiteReporter",
17+
new OkHttpClient.Builder()
18+
.build());
1919

2020
String graphiteHost = Configs.properties().getString("metrics.graphite.host");
2121
String grafanaApiKey = Configs.properties().getString("metrics.grafana.api_key");

stubbornjava-webapp/src/main/java/com/stubbornjava/webapp/github/GitHubApi.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,12 @@ public Builder clientSecret(String clientSecret) {
8888
}
8989

9090
public GitHubApi build() {
91-
OkHttpClient client = HttpClient.globalClient()
92-
.newBuilder()
91+
OkHttpClient client = HttpClient.baseClientBuilder()
9392
.addInterceptor(HttpClient.getHeaderInterceptor("Accept", VERSION_HEADER))
9493
.addInterceptor(GitHubApi.gitHubAuth(clientId, clientSecret))
9594
.build();
96-
return new GitHubApi(client);
95+
OkHttpClient metricsClient = HttpClient.wrapWithMetircs("GithubApiClient", client);
96+
return new GitHubApi(metricsClient);
9797
}
9898
}
9999

0 commit comments

Comments
 (0)