Планировщик задач Java: обмен данными в запланированной задаче ⇐ JAVA
Планировщик задач Java: обмен данными в запланированной задаче
Я пытаюсь запланировать задачу каждый час. С помощью вызова API я запускаю метод startHourlyTask(). Там я возвращаю «getListLength()», который правильно заполнен размером списка. Теперь я хочу использовать размер списка в своей задаче таймера. почему-то это значение всегда равно 0
@Service общественный класс SchedulerService расширяет TimerTask { частный окончательный RestTemplate restTemplate = новый RestTemplate(); частная строка apiUrl = "http://localhost:5000"; общедоступный int listLength; public int getListLength() { вернуть списокДлина; } public void setListLength (int listLength) { this.listLength = listLength; } public int startHourlyTask (имя строки) { Заголовки HttpHeaders = новые HttpHeaders(); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); HttpEntityentity = new HttpEntity("параметры", заголовки); ResponseEntity ответ = restTemplate.exchange(apiUrl + "/trigger/" + name, HttpMethod.GET,entity, String.class); if (response.getStatusCode() == HttpStatus.OK) { Строка responseBody = response.getBody(); если (responseBody != ноль) { пытаться { ObjectMapper objectMapper = новый ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(responseBody); JsonNodedescriptionsNode = jsonNode.get("описания"); if (descriptionsNode != null &&descriptionsNode.isArray()) { setListLength(descriptionsNode.size()); если (getListLength() >= 1) { вернуть getListLength(); } еще { вернуть -1; } } } catch (IOException e) { // Позже будут Loggers и все такое } } } вернуть -1; } @Override() // Запускаем каждые 10 секунд общественный недействительный запуск () { если (getListLength() >= 1) { System.out.println("привет"); } еще { System.out.println("ложь"); } } } Вот отправная точка приложения:
@SpringBootApplication @EnableScheduling общественный класс SchedulerApplication { public static void main(String[] args) { SpringApplication.run(SchedulerApplication.class, args); SchedulerService SchedulerService = новый SchedulerService(); Таймер таймер = новый таймер(); timer.schedule(schedulerService, 0, 10000); // Расписание каждые 60 секунд } } Может ли кто-нибудь мне помочь?
Я пытался создать локальную переменную с помощью установщика и получателя. Это не сработало. В дополнение к этому я пытался сделать это с помощью AtomicInteger, но тоже не получилось.
Я пытаюсь запланировать задачу каждый час. С помощью вызова API я запускаю метод startHourlyTask(). Там я возвращаю «getListLength()», который правильно заполнен размером списка. Теперь я хочу использовать размер списка в своей задаче таймера. почему-то это значение всегда равно 0
@Service общественный класс SchedulerService расширяет TimerTask { частный окончательный RestTemplate restTemplate = новый RestTemplate(); частная строка apiUrl = "http://localhost:5000"; общедоступный int listLength; public int getListLength() { вернуть списокДлина; } public void setListLength (int listLength) { this.listLength = listLength; } public int startHourlyTask (имя строки) { Заголовки HttpHeaders = новые HttpHeaders(); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); HttpEntityentity = new HttpEntity("параметры", заголовки); ResponseEntity ответ = restTemplate.exchange(apiUrl + "/trigger/" + name, HttpMethod.GET,entity, String.class); if (response.getStatusCode() == HttpStatus.OK) { Строка responseBody = response.getBody(); если (responseBody != ноль) { пытаться { ObjectMapper objectMapper = новый ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(responseBody); JsonNodedescriptionsNode = jsonNode.get("описания"); if (descriptionsNode != null &&descriptionsNode.isArray()) { setListLength(descriptionsNode.size()); если (getListLength() >= 1) { вернуть getListLength(); } еще { вернуть -1; } } } catch (IOException e) { // Позже будут Loggers и все такое } } } вернуть -1; } @Override() // Запускаем каждые 10 секунд общественный недействительный запуск () { если (getListLength() >= 1) { System.out.println("привет"); } еще { System.out.println("ложь"); } } } Вот отправная точка приложения:
@SpringBootApplication @EnableScheduling общественный класс SchedulerApplication { public static void main(String[] args) { SpringApplication.run(SchedulerApplication.class, args); SchedulerService SchedulerService = новый SchedulerService(); Таймер таймер = новый таймер(); timer.schedule(schedulerService, 0, 10000); // Расписание каждые 60 секунд } } Может ли кто-нибудь мне помочь?
Я пытался создать локальную переменную с помощью установщика и получателя. Это не сработало. В дополнение к этому я пытался сделать это с помощью AtomicInteger, но тоже не получилось.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение