Я создал проект Java Spring Boot, который часто запрашивает системы мониторинга и собирает данные с помощью метода get, каждой группе серверов назначается уникальный ключ задания при запуске этого сбора данных. Предположим, кто-то убил jar, как мне восстановить сбор данных, который работал на этом jar
Я написал метод, который изящно закрывает банку, когда кто-то ее останавливает, но когда кто-то ее убивает, я не уверен, что она работает.
/**
* Method to clean up all resources from quartz and pushgateway
*/
@Override
@PreDestroy
public boolean shutdownScheduler() {
logger.info("Closing scheduler and removing data from pushgateway");
GroupMatcher<JobKey> groupMatcher = GroupMatcher.jobGroupEquals(Constants.GROUP_KEY);
try {
Set<JobKey> jobKeys = schedulerFactoryBean.getScheduler().getJobKeys(groupMatcher);
if (!CollectionUtils.isEmpty(jobKeys)) {
for (JobKey jobKey : jobKeys) {
deleteJobWithKey(jobKey);
}
}
} catch (SchedulerException e) {
logger.debug(e);
}
logger.info("Scheduler shutdown");
return true;
}
Это работает, когда кто-то останавливает банку, но не когда я убиваю процесс java.