##################################### # Akka Remote Reference Config File # ##################################### # This is the reference config file that contains all the default settings. # Make your edits/overrides in your application.conf. # comments about akka.actor settings left out where they are already in akka- # actor.jar, because otherwise they would be repeated in config rendering. akka { actor { serializers { proto = "akka.remote.serialization.ProtobufSerializer" daemon-create = "akka.remote.serialization.DaemonMsgCreateSerializer" } serialization-bindings { # Since com.google.protobuf.Message does not extend Serializable but # GeneratedMessage does, need to use the more specific one here in order # to avoid ambiguity "com.google.protobuf.GeneratedMessage" = proto "akka.remote.DaemonMsgCreate" = daemon-create } deployment { default { # if this is set to a valid remote address, the named actor will be # deployed at that node e.g. "akka://sys@host:port" remote = "" target { # A list of hostnames and ports for instantiating the children of a # non-direct router # The format should be on "akka://sys@host:port", where: # - sys is the remote actor system name # - hostname can be either hostname or IP address the remote actor # should connect to # - port should be the port for the remote server on the other node # The number of actor instances to be spawned is still taken from the # nr-of-instances setting as for local routers; the instances will be # distributed round-robin among the given nodes. nodes = [] } } } } remote { ### General settings # Timeout after which the startup of the remoting subsystem is considered to be failed. # Increase this value if your transport drivers (see the enabled-transports section) # need longer time to be loaded. startup-timeout = 5 s # Timout after which the graceful shutdown of the remoting subsystem is considered to be failed. # After the timeout the remoting system is forcefully shut down. # Increase this value if your transport drivers (see the enabled-transports section) # need longer time to stop properly. shutdown-timeout = 5 s # Before shutting down the drivers, the remoting subsystem attempts to flush all pending # writes. This setting controls the maximum time the remoting is willing to wait before # moving on to shut down the drivers. flush-wait-on-shutdown = 2 s # Reuse inbound connections for outbound messages use-passive-connections = on # Dispatcher that the actors responsible to write to a connection will use. # The mailbox type must be always a DequeBasedMailbox. writer-dispatcher { mailbox-type = "akka.dispatch.UnboundedDequeBasedMailbox" } # If enabled, an inbound connection is only considered to be live after the remote # system sent an explicit acknowledgement. # It is recommended to leave this setting on when connectionless transports (e.g. UDP) # are used. wait-activity-enabled = on # Controls the backoff interval after a refused write is reattempted. (Transports may # refuse writes if their internal buffer is full) backoff-interval = 0.01 s # Acknowledgment timeout of management commands sent to the transport stack. command-ack-timeout = 30 s ### Security settings # Enable untrusted mode for full security of server managed actors, prevents # system messages to be send by clients, e.g. messages like 'Create', # 'Suspend', 'Resume', 'Terminate', 'Supervise', 'Link' etc. untrusted-mode = off # Should the remote server require that its peers share the same # secure-cookie (defined in the 'remote' section)? Secure cookies are passed # between during the initial handshake. Connections are refused if the initial # message contains a mismatching cookie or the cookie is missing. require-cookie = off # Generate your own with the script availbale in # '$AKKA_HOME/scripts/generate_config_with_secure_cookie.sh' or using # 'akka.util.Crypt.generateSecureCookie' secure-cookie = "" ### Logging # If this is "on", Akka will log all inbound messages at DEBUG level, # if off then they are not logged log-received-messages = off # If this is "on", Akka will log all outbound messages at DEBUG level, # if off then they are not logged log-sent-messages = off # If this is "on", Akka will log all RemoteLifeCycleEvents at the level # defined for each, if off then they are not logged. Failures to deserialize # received messages also fall under this flag. log-remote-lifecycle-events = off ### Failure detection and recovery # how often should keep-alive heartbeat messages sent to connections. heartbeat-interval = 1 s # Settings for the Phi accrual failure detector (http://ddg.jaist.ac.jp/pub/HDY+04.pdf # [Hayashibara et al]) used by the remoting subsystem to detect failed connections. failure-detector { # defines the failure detector threshold # A low threshold is prone to generate many wrong suspicions but ensures # a quick detection in the event of a real crash. Conversely, a high # threshold generates fewer mistakes but needs more time to detect # actual crashes threshold = 7.0 # Number of the samples of inter-heartbeat arrival times to adaptively # calculate the failure timeout for connections. max-sample-size = 100 # Minimum standard deviation to use for the normal distribution in # AccrualFailureDetector. Too low standard deviation might result in # too much sensitivity for sudden, but normal, deviations in heartbeat # inter arrival times. min-std-deviation = 100 ms # Number of potentially lost/delayed heartbeats that will be # accepted before considering it to be an anomaly. # It is a factor of heartbeat-interval. # This margin is important to be able to survive sudden, occasional, # pauses in heartbeat arrivals, due to for example garbage collect or # network drop. acceptable-heartbeat-pause = 3 s } # After failed to establish an outbound connection, the remoting will mark the # address as failed. This configuration option controls how much time should # be elapsed before reattempting a new connection. While the address is # gated, all messages sent to the address are delivered to dead-letters. # If this setting is 0, the remoting will always immediately reattempt # to establish a failed outbound connection and will buffer writes until # it succeeds. retry-gate-closed-for = 0 s # If the retry gate function is disabled (see retry-gate-closed-for) the # remoting subsystem will always attempt to reestablish failed outbound # connections. The settings below together control the maximum number of # reattempts in a given time window. The number of reattempts during # a window of "retry-window" will be maximum "maximum-retries-in-window". retry-window = 3 s maximum-retries-in-window = 5 ### Transports and adapters # List of the transport drivers that will be loaded by the remoting. # A list of fully qualified config paths must be provided where # the given configuration path contains a transport-class key # pointing to an implementation class of the Transport interface. # If multiple transports are provided, the address of the first # one will be used as a default address. enabled-transports = ["akka.remote.netty.tcp"] # Transport drivers can be augmented with adapters by adding their # name to the applied-adapters setting in the configuration of a # transport. The available adapters should be configured in this # section by providing a name, and the fully qualified name of # their corresponding implementation adapters { gremlin = "akka.remote.transport.FailureInjectorProvider" trttl = "akka.remote.transport.ThrottlerProvider" } ### Default configuration for the Netty based transport drivers netty.tcp { transport-class = "akka.remote.transport.netty.NettyTransport" # Transport drivers can be augmented with adapters by adding their # name to the applied-adapters list. The adapters will be applied # in the order they are provided. applied-adapters = [] transport-protocol = tcp # The default remote server port clients should connect to. # Default is 2552 (AKKA), use 0 if you want a random available port # This port needs to be unique for each actor system on the same machine. port = 2552 # The hostname or ip to bind the remoting to, # InetAddress.getLocalHost.getHostAddress is used if empty hostname = "" # Enables SSL support on this transport enable-ssl = false # Sets the connectTimeoutMillis of all outbound connections, # i.e. how long a connect may take until it is timed out connection-timeout = 120s # If set to "" then the specified dispatcher # will be used to accept inbound connections, and perform IO. If "" then # dedicated threads will be used. use-dispatcher-for-io = "" # Sets the high water mark for the in and outbound sockets, # set to 0b for platform default write-buffer-high-water-mark = 0b # Sets the low water mark for the in and outbound sockets, # set to 0b for platform default write-buffer-low-water-mark = 0b # Sets the send buffer size of the Sockets, # set to 0b for platform default send-buffer-size = 32000b # Sets the receive buffer size of the Sockets, # set to 0b for platform default receive-buffer-size = 32000b # Sets the size of the connection backlog backlog = 4096 # Used to configure the number of I/O worker threads on server sockets server-socket-worker-pool { # Min number of threads to cap factor-based number to pool-size-min = 2 # The pool size factor is used to determine thread pool size # using the following formula: ceil(available processors * factor). # Resulting size is then bounded by the pool-size-min and # pool-size-max values. pool-size-factor = 1.0 # Max number of threads to cap factor-based number to pool-size-max = 8 } # Used to configure the number of I/O worker threads on client sockets client-socket-worker-pool { # Min number of threads to cap factor-based number to pool-size-min = 2 # The pool size factor is used to determine thread pool size # using the following formula: ceil(available processors * factor). # Resulting size is then bounded by the pool-size-min and # pool-size-max values. pool-size-factor = 1.0 # Max number of threads to cap factor-based number to pool-size-max = 8 } } netty.udp = ${akka.remote.netty.tcp} netty.udp { transport-protocol = udp } netty.ssl = ${akka.remote.netty.tcp} netty.ssl = { enable-ssl = true } } }