2017-01-09 1 views
0

У меня есть очередь данных, которая имеет поле «созданное время». Я буду вставлять элементы в очередь в порядке возрастания по возрастанию. Теперь я должен запустить процесс в созданное время каждой первой записи в очереди, и он должен запускаться только один раз.Расписание процесса в произвольное время Весенняя загрузка

Ex -

Есть пять записи в очереди с временем
1) 1:00
2) 1:15
3) 1:20
4) 1:30
5) 2:00

Итак, мой запланированный процесс должен начаться в 13:00, а затем в 13:15, затем в 13:20, а затем в 1:20 и, наконец, только в 14:00 и не повторять через определенное время ,

Я использую весенний ботинок. Есть ли способ сделать это весной.

+0

вы можете использовать триггер cron и определить все эти моменты: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-trigger -implementations – user1121883

+0

Вы можете использовать аннотацию '@ Scheduled', или есть хорошая комбинация с использованием' Spring-boot' и 'Quartz'. Но я должен указать, что ваш вопрос не соответствует теме, потому что нет кода, мы могли бы вам помочь. – Patrick

+0

Но это очередность, и запись может быть сделана в любое время в очереди. Поэтому я сам не могу решить, в какое время будет выполняться задание. – sid297

ответ

0

Вы можете настроить TaskScheduler с использованием в качестве ThreadPoolTaskScheduler реализации, например, который в основном является оберткой ScheduledThreadPoolExecutor:

@Bean 
public TaskScheduler taskScheduler() 
{ 
    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); 
    taskScheduler.initialize(); 
    return taskScheduler; 
} 

После этого вы можете обработать вашу очередь в sumular способом с использованием планировщика:

public class MyQueueParser 
{ 
    @Autowired 
    private TaskScheduler scheduler; 

    public void parseQueue() 
    { 
     for (Item item: myQueue) 
     { 
      scheduler.schedule(() -> { 
       // do the work 
      }, item.getCreationTime()); 
     } 
    } 
} 

Планировщик выполняет runnable для выполнения и время, в которое запускается tast. TaskScheduler также позволяет использовать триггеры. Проверьте документы here