final class ClusterSingletonProxy extends Actor with ActorLogging
The ClusterSingletonProxy works together with the pekko.cluster.singleton.ClusterSingletonManager to provide a
distributed proxy to the singleton actor.
The proxy can be started on every node where the singleton needs to be reached and used as if it were the singleton itself. It will then act as a router to the currently running singleton instance. If the singleton is not currently available, e.g., during hand off or startup, the proxy will buffer the messages sent to the singleton and then deliver them when the singleton is finally available. The size of the buffer is configurable and it can be disabled by using a buffer size of 0. When the buffer is full old messages will be dropped when new messages are sent via the proxy.
The proxy works by keeping track of the oldest cluster member. When a new oldest member is identified, e.g. because the older one left the cluster, or at startup, the proxy will try to identify the singleton on the oldest member by periodically sending an pekko.actor.Identify message until the singleton responds with its pekko.actor.ActorIdentity.
Note that this is a best effort implementation: messages can always be lost due to the distributed nature of the actors involved.
- Alphabetic
- By Inheritance
- ClusterSingletonProxy
- ActorLogging
- Actor
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ClusterSingletonProxy(singletonManagerPath: String, settings: ClusterSingletonProxySettings)
Type Members
- type Receive = PartialFunction[Any, Unit]
- Definition Classes
- Actor
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def add(m: Member): Unit
Adds new member if it has the right role.
Adds new member if it has the right role.
- m
New cluster member.
- val ageOrdering: Ordering[Member]
- def aroundPostRestart(reason: Throwable): Unit
- Attributes
- protected[pekko]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundPostStop(): Unit
- Attributes
- protected[pekko]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundPreRestart(reason: Throwable, message: Option[Any]): Unit
- Attributes
- protected[pekko]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundPreStart(): Unit
- Attributes
- protected[pekko]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundReceive(receive: actor.Actor.Receive, msg: Any): Unit
- Attributes
- protected[pekko]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def buffer(msg: Any): Unit
- var buffer: MessageBuffer
- def cancelTimer(): Unit
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- val cluster: Cluster
- implicit val context: ActorContext
- Definition Classes
- Actor
- def createIdentifyId(i: Int): String
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def handleInitial(state: CurrentClusterState): Unit
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- var identifyCounter: Int
- var identifyId: String
- def identifySingleton(): Unit
Discard old singleton ActorRef and send a periodic message to self to identify the singleton.
- var identifyTimer: Option[Cancellable]
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def log: LoggingAdapter
- Definition Classes
- ActorLogging
- def matchingRole(member: Member): Boolean
- var membersByAge: SortedSet[Member]
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def postRestart(reason: Throwable): Unit
- Definition Classes
- Actor
- Annotations
- @throws(classOf[java.lang.Exception])
- def postStop(): Unit
- Definition Classes
- ClusterSingletonProxy → Actor
- def preRestart(reason: Throwable, message: Option[Any]): Unit
- Definition Classes
- Actor
- Annotations
- @throws(classOf[java.lang.Exception])
- def preStart(): Unit
- Definition Classes
- ClusterSingletonProxy → Actor
- def receive: PartialFunction[Any, Unit]
- Definition Classes
- ClusterSingletonProxy → Actor
- def remove(m: Member): Unit
Removes a member.
Removes a member.
- m
Cluster member to remove.
- implicit final val self: ActorRef
- Definition Classes
- Actor
- def sendBuffered(): Unit
- final def sender(): ActorRef
- Definition Classes
- Actor
- var singleton: Option[ActorRef]
- val singletonPath: Array[String]
- def supervisorStrategy: SupervisorStrategy
- Definition Classes
- Actor
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def trackChange(block: () => Unit): Unit
- def unhandled(message: Any): Unit
- Definition Classes
- Actor
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])