我必须测量进入控制器的请求的全部时间,然后执行某个服务的异步方法:
@RestController
public class HelloController {
@Autowired
private SomeService someService;
@GetMapping("/async")
@Timed(value = "async.method.time", description = "Time taken to execute async method")
public void async() throws InterruptedException {
Thread.sleep(2000);
someService.executeAsync();
}
}
@Service
public class SomeService {
@Async
public void executeAsync() throws InterruptedException {
Thread.sleep(2000);
System.out.println("Async execution done!");
}
}
实际上,如果我将@Timed
注解放在async服务方法之上,那么它将被正确测量,但我也想用控制器方法测量时间。如何使用千分尺实现这一点?
先谢谢你了!
1条答案
按热度按时间mspsb9vt1#
您可以使用
@NewSpan
注解。这种方式将具有完整的控制器执行时间以及@Async服务执行时间的分解。注意:使用Sping Boot 3.1.0和Micrometer 1.10.0+,您可以遵循此blog,它指导您使用Spring Boot启用Micrometer注解所需的最低设置。