app/services/ClockPerInstance.scala (22 lines of code) (raw):
package services
import akka.actor.{Actor, ActorRef, Timers}
import com.theguardian.multimedia.archivehunter.common.ExtValueConverters
import org.slf4j.LoggerFactory
import javax.inject.{Inject, Named}
import scala.concurrent.duration._
class ClockPerInstance @Inject() (
@Named("ingestProxyQueue") ingestProxyQueue: ActorRef,
@Named("proxyFrameworkQueue") proxyFrameworkQueue:ActorRef,
@Named("fileMoveQueue") fileMoveQueue:ActorRef,
) extends Actor with Timers with ExtValueConverters {
import ClockSingleton._
private val logger = LoggerFactory.getLogger(getClass)
logger.info("Starting ClockPerInstance")
timers.startTimerAtFixedRate(RapidClockTick, RapidClockTick, 30.seconds)
override def receive: Receive = {
case RapidClockTick=>
//these message queues don't need to be queried by a singleton so we can "fan out" the workload here
ingestProxyQueue ! GenericSqsActor.CheckForNotifications
proxyFrameworkQueue ! GenericSqsActor.CheckForNotifications
fileMoveQueue ! FileMoveQueue.CheckForNotificationsIfIdle
}
}