非同期追跡
Javaエージェント設定を介して非同期アプリケーション活動を追跡する方法を案内します。 CompletableFuture
メソッドの収集方法と、ユーザーアプリケーションにそのメソッドをhookingする方法が含まれます。 設定例とともにwhatap.confファイルに追加すべきオプションを提供し、非同期呼び出しの性能モニタリングを強化できるようにサポートします。
CompletableFuture
Javaエージェント設定を通じてCompletableFutureメソッドを収集する方法をご案内します。
CompletableFutureメソッドの追加
ユーザーのJavaアプリケーションプロジェクトにエージェントとしてhookingするCompletableFutureメソッドを追加します。
-
メソッド名:'trace'で統一
-
ReturnType:
Supplier
,Consumer
,Runnable
,Future
package io.home.test.util;
import java.util.concurrent.Future;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class W {
public static <T> Supplier<T> trace(Supplier<T> f) {
return f;
}
public static <T> Consumer<T> trace(Consumer<T> f) {
return f;
}
public static <T> Runnable trace(Runnable f) {
return f;
}
public static <T> Future<T> trace(Future<T> f) {
return f;
}
}
エージェント設定の追加
エージェント設定のため、whatap.confファイルに次のオプションを追加します。
whatap.conf
hook_completablefuture_patterns=io.home.test.util.W.*
ノート
-
Contextがある場合は、
trace
メソッドを追加してトランザクションを接続します。 -
Contextがない場合は、
hook_service_patterns
オプションでサービスを開始する必要があります。
使用例
-
イベントソース
public CompletableFuture<String> serviceATimeout() {
return CompletableFuture.supplyAsync(() -> {
RestTemplate restTemplate = new RestTemplate();
return restTemplate.getForObject("http://localhost:8081/api/serviceB/timeout", String.class);
});
} -
io.home.test.util.W.trace()
適用// io.home.test.util.W.trace()適用
public CompletableFuture<String> serviceATimeout() {
return CompletableFuture.supplyAsync(W.trace(() -> {
RestTemplate restTemplate = new RestTemplate();
return restTemplate.getForObject("http://localhost:8081/api/serviceB/timeout", String.class);
}));
}