Remove samples (#22288)
Add code, that was used for documentation to the appropriate projects or akka-docs.
This commit is contained in:
parent
b8cdcf3439
commit
958de6a916
373 changed files with 1201 additions and 17259 deletions
|
|
@ -0,0 +1,60 @@
|
|||
package scala.docs.cluster
|
||||
|
||||
import language.postfixOps
|
||||
import scala.concurrent.duration._
|
||||
import akka.actor.Actor
|
||||
import akka.actor.ActorRef
|
||||
import akka.actor.ActorSystem
|
||||
import akka.actor.Props
|
||||
import akka.actor.Terminated
|
||||
import akka.pattern.ask
|
||||
import akka.util.Timeout
|
||||
import com.typesafe.config.ConfigFactory
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
|
||||
//#frontend
|
||||
class TransformationFrontend extends Actor {
|
||||
|
||||
var backends = IndexedSeq.empty[ActorRef]
|
||||
var jobCounter = 0
|
||||
|
||||
def receive = {
|
||||
case job: TransformationJob if backends.isEmpty =>
|
||||
sender() ! JobFailed("Service unavailable, try again later", job)
|
||||
|
||||
case job: TransformationJob =>
|
||||
jobCounter += 1
|
||||
backends(jobCounter % backends.size) forward job
|
||||
|
||||
case BackendRegistration if !backends.contains(sender()) =>
|
||||
context watch sender()
|
||||
backends = backends :+ sender()
|
||||
|
||||
case Terminated(a) =>
|
||||
backends = backends.filterNot(_ == a)
|
||||
}
|
||||
}
|
||||
//#frontend
|
||||
|
||||
object TransformationFrontend {
|
||||
def main(args: Array[String]): Unit = {
|
||||
// Override the configuration of the port when specified as program argument
|
||||
val port = if (args.isEmpty) "0" else args(0)
|
||||
val config = ConfigFactory.parseString(s"akka.remote.netty.tcp.port=$port").
|
||||
withFallback(ConfigFactory.parseString("akka.cluster.roles = [frontend]")).
|
||||
withFallback(ConfigFactory.load())
|
||||
|
||||
val system = ActorSystem("ClusterSystem", config)
|
||||
val frontend = system.actorOf(Props[TransformationFrontend], name = "frontend")
|
||||
|
||||
val counter = new AtomicInteger
|
||||
import system.dispatcher
|
||||
system.scheduler.schedule(2.seconds, 2.seconds) {
|
||||
implicit val timeout = Timeout(5 seconds)
|
||||
(frontend ? TransformationJob("hello-" + counter.incrementAndGet())) onSuccess {
|
||||
case result => println(result)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue