Запланированный триггер Springboot при наличии сущности

#java #spring #spring-boot #hibernate #spring-data-jpa

Вопрос:

У меня есть функция в spring boot, которая проверяет каждые 10 секунд (100 мс) наличие любого существующего объекта в базе данных JPA SQL, обрабатывает запрошенные действия и удаляет объект после завершения действий. Проблема в том, что проверка базы данных каждые 100 мс требует очень много памяти, дорого и расточительно, и раньше приводила к сбоям (потому что я запускаю это на бесплатном сервере и увеличиваю объем памяти). Мне было интересно, есть ли метод, аналогичный @scheduled тому , который запускает метод, если таблица бд содержит какие-либо строки (в принципе, если exampleRepository.findAll() не возвращается null , то мой метод запускается)?

Спасибо, ребята!

Ответ №1:

Что ж, есть пара вариантов, которые вы могли бы попробовать.

  1. Если ваша «обработка» — это просто еще одно действие с базой данных, вставка/обновление другой таблицы, то почему бы вам не попробовать триггеры базы данных?
  2. Вы можете воспользоваться архитектурой, управляемой событиями, использовать очередь сообщений или предоставить API в своей службе, которая будет напрямую использовать данные. Планировщики, как правило, являются последним средством в таких случаях.
  3. Проблема нехватки памяти может быть связана не с ограниченным объемом памяти, а с тем, как вы извлекаете данные из базы данных. Вместо загрузки всех данных сразу используйте меньшие фрагменты и выполняйте пакетную обработку.

Комментарии:

1. Большое вам спасибо за ваш ответ! Мои элементы уже упакованы :), и поскольку мой код построен на базе других кодов с закрытым исходным кодом, к сожалению, обработка API будет невозможна. Я обязательно попробую db запускает выстрел!