메트릭 등록 - 타이머
타이머 - V1
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
..
@Slf4j
@RequiredArgsConstructor
public class OrderServiceV3 implements OrderService {
private final MeterRegistry registry;
private AtomicInteger stock = new AtomicInteger(100);
@Override
public void order() {
Timer timer = Timer.builder("my.order")
.tag("class", this.getClass().getName())
.tag("method", "order")
.description("order")
.register(registry);
timer.record(()->{
log.info("주문");
stock.decrementAndGet();
sleep(500);//최대 0.2초 추가 대기
});
}
@Override
public void cancel() {
Timer timer = Timer.builder("my.order")
.tag("class", this.getClass().getName())
.tag("method", "cancel")
.description("order")
.register(registry);
timer.record(()->{
log.info("취소");
stock.incrementAntGet();
sleep(200);//최대 0.2초 추가 대기
});
}
@Override
public AtomicInteger getStock() {
return stock;
}
private void sleep(int time) {
try {
Thread.sleep(time + new Random().nextInt(200));
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
그라파나 등록



타이머 - V2
Last updated