Не знаю, правильный ли это подход, но, похоже, он работает нормально:
В конце prepare
метода Bolt
я добавил вызов intiScheduler()
, который содержит следующий код:
Calendar calendar = Calendar.getInstance();
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new PeriodicAction() [class implementing Runnable], millisToFullHour(calendar) [wanna start at the top of the hour], 60*60*1000 [run every hour], TimeUnit.MILLISECONDS);
Это нужно использовать с осторожностью, потому что болт может иметь несколько экземпляров в зависимости от вашей настройки.