Малая точность - вы не используете Postman для реализации CRUD; вы используете Postman для проверки своей реализации.
@Async
используется для разрешения выполнения методов в асинхронном режиме (другими словами, несколько методов могут выполняться одновременно). То, что вы ищете, вероятно, @Scheduled.
@Scheduled
позволяет планировать задачу каждые X раз - в вашем случае, чтобы запланировать выполнение метода, вы должны сделать что-то подобное:
@Scheduled(fixedRate = 1800000)
public void sendMessagePeriodically() {
// ...
}
(1000 мс * 60 * 30 = 1800000 мс = 30 мин)
Чтобы вышеперечисленное сработало, вы можете аннотировать класс конфигурации с помощью @EnableScheduling
:
@Configuration
@EnableScheduling
public class SchedulingConfiguration {
}
В качестве альтернативы вы можете добавить @EnableScheduling
поверх вашего основного класса (тот, у которого @SpringBootApplication
)
- Нет, вам не нужен графический интерфейс. Все, что вам нужно сделать, это внедрить систему аутентификации либо с помощью Spring Security (которая значительно облегчит вашу работу), либо с помощью контроллера. Затем вы можете просто связаться с этим API с помощью Postman, чтобы идентифицировать себя.
Удачи.
Обновление
Например, вы можете запланировать задачу, которая запускается каждую минуту, и проверять, запланированы ли какие-либо события через 30 минут. Если есть, то отправьте уведомление:
@Scheduled(fixedRate = 60000)
public void checkForUpcomingEvents() {
// get all events scheduled in ~30 minutes
List<Event> events = getEventsScheduledSoon();
for (Event event : events) { // for each event
event.notifyUsers(); // notify all users concerned
}
}
Обратите внимание, что важно, чтобы вы получили все события, которые имеют событие в приблизительно через 30 минут (например, между 29 - 31), потому что, хотя вы можете полагаться на @Scheduled
для выполнения, вам все равно нужно рассмотреть возможные задержки. Следуя этой логике, вы также должны убедиться, что вы не уведомляете одно и то же лицо дважды об одном и том же событии.
Есть несколько переменных, которые нужно учитывать, например, сколько времени занимает получение событий? Сколько времени занимает уведомление пользователей? В зависимости от этих переменных вам может потребоваться изменить конфигурацию (например, запускать каждые 5 минут вместо 1 минуты).
Есть действительно много способов сделать это, ваше решение использовать java ExecutorService
также превосходно, но, поскольку вы пометили свой вопрос с помощью spring-boot
, а не java
, я выбрал @Scheduled
подход.