Skip to content

Instantly share code, notes, and snippets.

@patriknw
patriknw / ConsistentHashingRouterSpotlight.scala
Created October 3, 2012 12:16
Spotlight for ConsistentHashingRouter
import akka.routing.ConsistentHashingRouter
import akka.routing.ConsistentHashingRouter.ConsistentHashMapping
import akka.actor.Actor
import akka.pattern.ask
case class Entry(key: String, value: String)
class Cache extends Actor {
var cache = Map.empty[String, String]
@patriknw
patriknw / ClusterRouter.conf
Created October 8, 2012 12:15
Spotlight for Cluster Aware Routers
akka.actor.deployment {
/statsService/workerRouter {
router = round-robin
nr-of-instances = 100
cluster {
enabled = on
routees-path = "/user/statsWorker"
}
}
}
@patriknw
patriknw / ClusterListener.scala
Created October 8, 2012 12:48
Spotlight for Cluster Membership
import akka.cluster.Cluster
import akka.cluster.ClusterEvent._
val clusterListener = system.actorOf(Props(new Actor with ActorLogging {
def receive = {
case state: CurrentClusterState ⇒
log.info("Current members: {}", state.members)
case MemberUp(member) ⇒
log.info("Member is up: {}", member)
// send a message to the "world" actor running at the member node
@patriknw
patriknw / ClusterWatch.scala
Created October 8, 2012 13:12
Spotlight for Cluster Death Watch
case object BackendRegistration
case class Job(text: String)
class Frontend extends Actor {
var backends = IndexedSeq.empty[ActorRef]
var jobCounter = 0
def receive = {
case job: Job if backends.isEmpty =>
@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
@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 / 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 / gist:4970794
Created February 17, 2013 09:42
Spotlight adaptive router
val backend = context.actorOf(Props[FactorialBackend].
withRouter(FromConfig), name = "factorialBackendRouter")
@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:4970800
Created February 17, 2013 09:44
Spotlight cluster startup config
akka.cluster.min-nr-of-members = 3