Java Agent API

Spring Webflux - 병렬 스트림을 활용한 Http 호출

목적

와탭랩스 자바 모니터링은 whatap-spring-webflux 플러그인을 통해 Spring Webflux의 Http 호출을 추적할 수 있습니다. Webflux에서 병렬 스트림을 활용하여 비동기로 Http 호출을 하는 경우에도 호출 정보를 수집할 수 있도록 agent api를 제공하고 있습니다.

추적

와탭랩스의 agent api는 추적 수단인 Context를 선언, 할당, 분리하여 개발자가 원하는 방식으로 thread 정보를 호출 대상에 전달하여 추적할 수 있습니다.

Java agent api 설치 방법

maven [pom.xml]
    <!-- WhaTap maven repository -->
	<repositories>
		<repository>
			<id>io.whatap</id>
			<name>WhaTap maven repository</name>
			<url>https://repo.whatap.io/maven</url>
		</repository>
	</repositories>
    ...
    <!-- WhaTap agent Api -->
    <dependency>
        <groupId>io.whatap</groupId>
        <artifactId>whatap.agent.api</artifactId>
        <version>2.0.0</version>
        <scope>compile</scope>
    </dependency>
gradle [build.gradle]
    repositories {
        maven {
            url "https://repo.whatap.io/maven"
        }
    }
    ...
    dependencies {
        implementation 'io.whatap:whatap.agent.api:2.0.0'
    }

활용 예시

코드 예시
    @PostMapping(value = "/url/trace")
    public Mono<?> parallelSearchUrlTrace(@RequestBody Search search) {
        whatap.v1.TraceCtx ctx = whatap.v1.Trace.context();     // 추적 정보 설정
        return Flux.fromIterable(this.searchServiceList)
                .parallel()
                .runOn(Schedulers.boundedElastic())
                .flatMap(whatap.v1.Branch.mono(ctx, (SearchService service) -> service.searchUrl(search)))  // 추적 정보 전달
                .sequential()
                .collectList();
    }
결과 화면
agent api 001
Figure 1. Spring Webflux 호출 + 서비스 호출