Package akka.remote

Class RemoteActorRefProvider

  • All Implemented Interfaces:
    ActorRefProvider
    Direct Known Subclasses:
    ClusterActorRefProvider

    public class RemoteActorRefProvider
    extends java.lang.Object
    implements ActorRefProvider
    INTERNAL API Depending on this class is not supported, only the ActorRefProvider interface is supported.

    Remote ActorRefProvider. Starts up actor on remote node and creates a RemoteActorRef representing it.

    • Method Detail

      • systemName

        public java.lang.String systemName()
      • hasClusterOrUseUnsafe

        public final boolean hasClusterOrUseUnsafe()
      • createDeployer

        protected RemoteDeployer createDeployer()
        Factory method to make it possible to override deployer in subclass Creates a new instance every time
      • rootPath

        public ActorPath rootPath()
        Description copied from interface: ActorRefProvider
        The root path for all actors within this actor system, not including any remote address information.
        Specified by:
        rootPath in interface ActorRefProvider
      • rootGuardian

        public InternalActorRef rootGuardian()
        Description copied from interface: ActorRefProvider
        Reference to the supervisor of guardian and systemGuardian; this is exposed so that the ActorSystemImpl can use it as lookupRoot, i.e. for anchoring absolute actor look-ups.
        Specified by:
        rootGuardian in interface ActorRefProvider
      • terminationFuture

        public scala.concurrent.Future<Terminated> terminationFuture()
        Description copied from interface: ActorRefProvider
        This Future is completed upon termination of this ActorRefProvider, which is usually initiated by stopping the guardian via ActorSystem.stop().
        Specified by:
        terminationFuture in interface ActorRefProvider
      • unregisterTempActor

        public void unregisterTempActor​(ActorPath path)
        Description copied from interface: ActorRefProvider
        Unregister a temporary actor from the &ldquo;/temp&rdquo; path (i.e. obtained from tempPath()); do NOT pass in any other path.
        Specified by:
        unregisterTempActor in interface ActorRefProvider
      • tempPath

        public ActorPath tempPath​(java.lang.String prefix)
        Description copied from interface: ActorRefProvider
        Generates and returns a unique actor path starting with prefix below &ldquo;/temp&rdquo;.
        Specified by:
        tempPath in interface ActorRefProvider
      • remoteWatcher

        public scala.Option<ActorRef> remoteWatcher()
      • init

        public void init​(ActorSystemImpl system)
        Description copied from interface: ActorRefProvider
        INTERNAL API: Initialization of an ActorRefProvider happens in two steps: first construction of the object with settings, eventStream, etc. and then—when the ActorSystem is constructed—the second phase during which actors may be created (e.g. the guardians).
        Specified by:
        init in interface ActorRefProvider
      • warnIfDirectUse

        protected void warnIfDirectUse()
        Can be overridden when using RemoteActorRefProvider as a superclass rather than directly
      • warnIfUseUnsafeWithoutCluster

        public void warnIfUseUnsafeWithoutCluster()
      • warnOnUnsafe

        protected void warnOnUnsafe​(java.lang.String message)
      • warnIfUnsafeDeathwatchWithoutCluster

        public void warnIfUnsafeDeathwatchWithoutCluster​(ActorRef watchee,
                                                         ActorRef watcher,
                                                         java.lang.String action)
        Logs if deathwatch message is intentionally dropped. To disable warnings set akka.remote.warn-unsafe-watch-outside-cluster to off or use Akka Cluster.
      • warnIfNotRemoteActorRef

        protected void warnIfNotRemoteActorRef​(ActorPath path)
        If warnOnUnsafeRemote, this logs a warning if actorOf falls back to LocalActorRef versus creating a RemoteActorRef. Override to log a more granular reason if using RemoteActorRefProvider as a superclass.
      • shouldCreateRemoteActorRef

        protected boolean shouldCreateRemoteActorRef​(ActorSystem system,
                                                     Address address)
        Override to add any additional checks if using `RemoteActorRefProvider` as a superclass.
      • actorOf

        public InternalActorRef actorOf​(ActorSystemImpl system,
                                        Props props,
                                        InternalActorRef supervisor,
                                        ActorPath path,
                                        boolean systemService,
                                        scala.Option<Deploy> deploy,
                                        boolean lookupDeploy,
                                        boolean async)
        Description copied from interface: ActorRefProvider
        INTERNAL API: Actor factory with create-only semantics: will create an actor as described by props with the given supervisor and path (may be different in case of remote supervision). If systemService is true, deployment is bypassed (local-only). If Some(deploy) is passed in, it should be regarded as taking precedence over the nominally applicable settings, but it should be overridable from external configuration; the lookup of the latter can be suppressed by setting lookupDeploy to false.
        Specified by:
        actorOf in interface ActorRefProvider
      • rootGuardianAt

        public ActorRef rootGuardianAt​(Address address)
        Description copied from interface: ActorRefProvider
        Reference to the supervisor of guardian and systemGuardian at the specified address; this is exposed so that the ActorRefFactory can use it as lookupRoot, i.e. for anchoring absolute actor selections.
        Specified by:
        rootGuardianAt in interface ActorRefProvider
      • resolveActorRefWithLocalAddress

        public InternalActorRef resolveActorRefWithLocalAddress​(java.lang.String path,
                                                                Address localAddress)
        INTERNAL API Called in deserialization of incoming remote messages where the correct local address is known.
      • resolveActorRef

        public ActorRef resolveActorRef​(java.lang.String path)
        Description copied from interface: ActorRefProvider
        Create actor reference for a specified path. If no such actor exists, it will be (equivalent to) a dead letter reference.
        Specified by:
        resolveActorRef in interface ActorRefProvider
      • internalResolveActorRef

        public ActorRef internalResolveActorRef​(java.lang.String path)
        INTERNAL API: This is used by the ActorRefResolveCache via the public resolveActorRef(path: String).
      • useActorOnNode

        public void useActorOnNode​(ActorRef ref,
                                   Props props,
                                   Deploy deploy,
                                   ActorRef supervisor)
        Using (checking out) actor on a specific node.
      • getExternalAddressFor

        public scala.Option<Address> getExternalAddressFor​(Address addr)
        Description copied from interface: ActorRefProvider
        Obtain the address which is to be used within sender references when sending to the given other address or none if the other address cannot be reached from this system (i.e. no means of communication known; no attempt is made to verify actual reachability).
        Specified by:
        getExternalAddressFor in interface ActorRefProvider
      • quarantine

        public void quarantine​(Address address,
                               scala.Option<java.lang.Object> uid,
                               java.lang.String reason)
        Marks a remote system as out of sync and prevents reconnects until the quarantine timeout elapses.

        Parameters:
        address - Address of the remote system to be quarantined
        uid - UID of the remote system, if the uid is not defined it will not be a strong quarantine but the current endpoint writer will be stopped (dropping system messages) and the address will be gated