2017-02-06 3 views
1

Я разрабатываю приложение, в котором у вас есть Offers и Counter-offers. Когда я создаю предложение, я хочу запланировать запуск задачи через 5 дней, чтобы проверить, есть ли у нее какое-либо встречное предложение. Если у него нет встречного предложения, статус предложения истечет.Запуск задачи один раз после x дней с помощью Spring

Я прочитал об аннотации @Scheduled, но он выполняет только одну задачу каждые x дней, но я хочу, чтобы один запускал задачу только после создания предложения и только один раз для каждого нового предложения. Как я могу это достичь? Спасибо

ответ

0

Я не даю вам прямого ответа, скорее, вы можете перейти к использованию Spring Task Scheduler.

Spring 3.0 представляет TaskScheduler для планирования задач. Это часть Spring-Core, нет необходимости объявлять дополнительную зависимость.

Создать хрон как следующая конфигурация Spring

<task:scheduled-tasks> 
    <task:scheduled ref="offerScheduler" method="processOffer" cron="0 1 * * * *" /> 
</task:scheduled-tasks> 

Убедитесь, что у вас есть класс с именем «OfferSchedueled» и имеет метод «processOffer», чтобы выполнить вашу логику, чтобы изменить каждый день предложение состояния в 1 час ночи.

@Component 
public class OfferSchedueled { 

public void processOffer(){ 
    //Get all non expired offers into a list or any collection 
    //Loop through each of them 
    //Check it's time span between created date and today is 5 days 
    //if so and it doesn't have any counter offers, then mark that as expired 
} 

} 

Для более чтений:

http://techie-mixture.blogspot.com/2016/07/spring-batch-job-executing-scheduled.html http://howtodoinjava.com/spring/spring-core/4-ways-to-schedule-tasks-in-spring-3-scheduled-example/ https://www.mkyong.com/spring-batch/spring-batch-and-spring-taskscheduler-example/

+0

Привет, используя хроны вы можете запускать задачи периодически, но вы не можете запустить задачу после й дней, начиная с нерегулярной точкой во время. –

+0

То, что вы сказали, абсолютно правильно, но то, что я пытаюсь сказать, периодически запускает задачу cron и записывает вашу логику таким образом, чтобы она обрабатывала предложения любым способом. (Я написал код высокого уровня psuedo в приведенном выше ответе) –

+0

Да, это приблизительный ответ на решение, но это не то, что я хочу, потому что, если вы используете задание cron, задача может быть выполнена через 5 дней и 23 часа например. Я хочу выполнить задачу только через 5 дней после создания 'Offer'. –

Смежные вопросы