У меня есть работа:
public class Jobber {
@Timed(name = "my_timed")
public void someJob(String symbol) {
LOGGER.info("Started job");
...
}
public void startJob(String currency){
threadPoolTaskScheduler.scheduleWithFixedDelay(
() -> {
someJob(currency);
}
}, 5_000);
}
и стартер:
public class AppEvenListener implements ApplicationListener<ApplicationReadyEvent> {
@Autowired
private Jobber jobber;
@Override
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
jobber.startJob("USD");
}
}
А потом я запустил приложение и увидел, что dropwizard не увидел, что показатель «my_timed» пуст:
count = 0
mean rate = 0.00 calls/second
1-minute rate = 0.00 calls/second
5-minute rate = 0.00 calls/second
15-minute rate = 0.00 calls/second
min = 0.00 milliseconds
max = 0.00 milliseconds
mean = 0.00 milliseconds
stddev = 0.00 milliseconds
median = 0.00 milliseconds
75% <= 0.00 milliseconds
95% <= 0.00 milliseconds
98% <= 0.00 milliseconds
99% <= 0.00 milliseconds
99.9% <= 0.00 milliseconds
Меня это удивило, потому что я смог найти много Started job
сообщений в логах.
Затем я попытался сделать что-то подобное внутри main
метода:
Jobber jobber = applicationContext.getBean(Jobber.class);
for (int i = 0; i < 1_000_000; i++) {
jobber jobber.someJob("Ololo");
Thread.sleep(10_000);
}
И после этого я начал видеть непустые метрики для "my_timed"
Так что я считаю, что проблема как-то связана с фоновыми потоками.
как я могу это исправить?
P.S. Версия с загрузочной пружиной = 1.5