Skip to content

Instantly share code, notes, and snippets.

@dtaniwaki
Created December 12, 2015 10:59
Show Gist options
  • Save dtaniwaki/e9acc206ff631c069c63 to your computer and use it in GitHub Desktop.
Save dtaniwaki/e9acc206ff631c069c63 to your computer and use it in GitHub Desktop.
Akkaによるbatch request作り方 ref: http://qiita.com/dtaniwaki/items/fc11b503ce0e27e52516
case class BatchTriggerTick()
class PusherActor(config: Config = ConfigFactory.load()) extends Actor {
// ...
system.scheduler.schedule(
1000 milliseconds,
1000 milliseconds,
self,
BatchTriggerTick()))
// ...
}
class PusherActor(config: Config = ConfigFactory.load()) extends Actor {
// ...
protected val batchTriggerQueue = Queue[BatchTriggerMessage]()
override def receive: Receive = {
case trigger: BatchTriggerMessage =>
batchTriggerQueue.enqueue(trigger)
true
case BatchTriggerTick() =>
val triggers = batchTriggerQueue.dequeueAll { _ => true }
triggers.grouped(batchNumber) foreach { triggers =>
pusher.trigger(triggers.map(BatchTriggerMessage.unapply(_).get)).map {
case Success(_) => // Do Nothing
case Failure(e) => logger.warn(e.getMessage)
}
}
triggers.length
}
// ...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment