Skip to content

Instantly share code, notes, and snippets.

@patriknw
patriknw / MessageDiscarder.scala
Created February 18, 2013 21:09
Inspiration for Akka mailing list question
import akka.actor._
object MessageDiscarder {
case object WorkerAvailable
}
class MessageDiscarder extends Actor {
import MessageDiscarder._
var queued: Option[(Any, ActorRef)] = None
@patriknw
patriknw / gist:4970807
Last active December 13, 2015 20:38
Spotlight cluster singleton proxy
class MasterProxy extends Actor {
// subscribe to LeaderChanged, re-subscribe when restart
override def preStart(): Unit =
Cluster(context.system).subscribe(self, classOf[LeaderChanged])
override def postStop(): Unit =
Cluster(context.system).unsubscribe(self)
var leaderAddress: Option[Address] = None
def receive = {
@patriknw
patriknw / gist:4970806
Created February 17, 2013 09:46
Spotlight cluster singleton
system.actorOf(Props(new ClusterSingletonManager(
singletonProps = handOverData => Props[Master]),
singletonName = "master",
terminationMessage = PoisonPill)),
name = "singleton")
@patriknw
patriknw / gist:4970804
Created February 17, 2013 09:45
Spotlight cluster registerOnMemberUp
Cluster(system) registerOnMemberUp {
system.actorOf(Props(new FactorialFrontend(upToN, repeat = true)),
name = "factorialFrontend")
}
@patriknw
patriknw / gist:4970800
Created February 17, 2013 09:44
Spotlight cluster startup config
akka.cluster.min-nr-of-members = 3
@patriknw
patriknw / gist:4970797
Created February 17, 2013 09:43
Spotlight adaptive router config
akka.actor.deployment {
/factorialFrontend/factorialBackendRouter = {
router = adaptive
# metrics-selector = heap
# metrics-selector = load
# metrics-selector = cpu
metrics-selector = mix
nr-of-instances = 100
cluster {
enabled = on
@patriknw
patriknw / gist:4970794
Created February 17, 2013 09:42
Spotlight adaptive router
val backend = context.actorOf(Props[FactorialBackend].
withRouter(FromConfig), name = "factorialBackendRouter")
@patriknw
patriknw / ClusterSingletonManager.scala
Created January 27, 2013 19:18
Port of ClusterSingletonManager to Akka 2.1.0. Use the 2.1.1 version when that is out.
/**
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.contrib.pattern
import scala.concurrent.duration._
import akka.actor.Actor
import akka.actor.Actor.Receive
import akka.actor.ActorLogging
@patriknw
patriknw / CamelDemo.scala
Created November 21, 2012 16:41
Spotlight for Camel
import akka.actor.{ Actor, ActorRef, Props, ActorSystem }
import akka.camel.{ CamelExtension, CamelMessage, Consumer, Producer }
import org.apache.activemq.camel.component.ActiveMQComponent
object CamelDemo extends App {
val system = ActorSystem("CamelDemo")
CamelExtension(system).context.addComponent("activemq",
ActiveMQComponent.activeMQComponent(
"vm://localhost?broker.persistent=false"))
@patriknw
patriknw / PeekMailbox.scala
Created November 21, 2012 14:20
PeekMailbox example
package example
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentLinkedQueue
import com.typesafe.config.Config
import com.typesafe.config.ConfigFactory
import akka.actor.Actor
import akka.actor.ActorContext
import akka.actor.ActorRef
import akka.actor.ActorSystem