# This is useful when you are uncertain of what configuration is used.
log-config-on-start = off
- # Log at info level when messages are sent to dead letters.
+ # Log at info level when messages are sent to dead letters, or published to
+ # eventStream as `DeadLetter`, `Dropped` or `UnhandledMessage`.
# Possible values:
# on: all dead letters are logged
# off: no logging of dead letters
# Possibility to turn off logging of dead letters while the actor system
# is shutting down. Logging is only done when enabled by 'log-dead-letters'
# setting.
- log-dead-letters-during-shutdown = on
+ log-dead-letters-during-shutdown = off
+
+ # When log-dead-letters is enabled, this will re-enable the logging after configured duration.
+ # infinite: suspend the logging forever;
+ # or a duration (eg: 5 minutes), after which the logging will be re-enabled.
+ log-dead-letters-suspend-duration = 5 minutes
# List FQCN of extensions which shall be loaded at actor system startup.
# Library extensions are regular extensions that are loaded at startup and are
#
# Should not be set by end user applications in 'application.conf', use the extensions property for that
#
- library-extensions = ${?akka.library-extensions} ["akka.serialization.SerializationExtension"]
+ library-extensions = ${?akka.library-extensions} ["akka.serialization.SerializationExtension$"]
# List FQCN of extensions which shall be loaded at actor system startup.
# Should be on the format: 'extensions = ["foo", "bar"]' etc.
# terminate the ActorSystem itself, with or without using CoordinatedShutdown.
jvm-shutdown-hooks = on
+ # Version must be the same across all modules and if they are different the startup
+ # will fail. It's possible but not recommended, to disable this check, and only log a warning,
+ # by setting this property to `off`.
+ fail-mixed-versions = on
+
+ # Some modules (remoting only right now) can emit custom events to the Java Flight Recorder if running
+ # on JDK 11 or later. If you for some reason do not want that, it can be disabled and switched to no-ops
+ # with this toggle.
+ java-flight-recorder {
+ enabled = true
+ }
+
actor {
# Either one of "local", "remote" or "cluster" or the
# In addition to the default there is akka.actor.StoppingSupervisorStrategy.
guardian-supervisor-strategy = "akka.actor.DefaultSupervisorStrategy"
- # Timeout for ActorSystem.actorOf
+ # Timeout for Extension creation and a few other potentially blocking
+ # initialization tasks.
creation-timeout = 20s
# Serializes and deserializes (non-primitive) messages to ensure immutability,
# this is only intended for testing.
serialize-messages = off
- # Additional serialization bindings which are enabled automatically when allow-java-serialization is disabled.
- # settings are provided
- java-serialization-disabled-additional-serialization-bindings = {}
-
# Serializes and deserializes creators (in Props) to ensure that they can be
# sent over the network, this is only intended for testing. Purely local deployments
# as marked with deploy.scope == LocalScope are exempt from verification.
serialize-creators = off
+ # If serialize-messages or serialize-creators are enabled classes that starts with
+ # a prefix listed here are not verified.
+ no-serialization-verification-needed-class-prefix = ["akka."]
+
# Timeout for send operations to top-level actors which are in the process
# of being started. This is only relevant if using a bounded mailbox or the
# CallingThreadDispatcher for a top-level actor.
unstarted-push-timeout = 10s
+ # TypedActor deprecated since 2.6.0.
typed {
- # Default timeout for typed actor methods with non-void return type
+ # Default timeout for the deprecated TypedActor (not the new actor APIs in 2.6)
+ # methods with non-void return type.
timeout = 5s
}
# exploration will be +- 5
explore-step-size = 0.1
- # Probability of doing an exploration v.s. optmization.
+ # Probability of doing an exploration v.s. optimization.
chance-of-exploration = 0.4
# When downsizing after a long streak of underutilization, the resizer
}
# This will be used if you have set "executor = "fork-join-executor""
- # Underlying thread pool implementation is akka.dispatch.forkjoin.ForkJoinPool
+ # Underlying thread pool implementation is java.util.concurrent.ForkJoinPool
fork-join-executor {
# Min number of threads to cap factor-based parallelism number to
parallelism-min = 8
# The parallelism factor is used to determine thread pool size using the
# following formula: ceil(available processors * factor). Resulting size
# is then bounded by the parallelism-min and parallelism-max values.
- parallelism-factor = 3.0
+ parallelism-factor = 1.0
# Max number of threads to cap factor-based parallelism number to
parallelism-max = 64
mailbox-requirement = ""
}
+ # Default separate internal dispatcher to run Akka internal tasks and actors on
+ # protecting them against starvation because of accidental blocking in user actors (which run on the
+ # default dispatcher)
+ internal-dispatcher {
+ type = "Dispatcher"
+ executor = "fork-join-executor"
+ throughput = 5
+ fork-join-executor {
+ parallelism-min = 4
+ parallelism-factor = 1.0
+ parallelism-max = 64
+ }
+ }
+
default-blocking-io-dispatcher {
type = "Dispatcher"
executor = "thread-pool-executor"
debug {
# enable function of Actor.loggable(), which is to log any received message
# at DEBUG level, see the “Testing Actor Systems” section of the Akka
- # Documentation at http://akka.io/docs
+ # Documentation at https://akka.io/docs
receive = off
# enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill etc.)
#
# This setting is a short-cut to
# - using DisabledJavaSerializer instead of JavaSerializer
- # - enable-additional-serialization-bindings = on
#
# Completely disable the use of `akka.serialization.JavaSerialization` by the
# Akka Serialization extension, instead DisabledJavaSerializer will
#
# Please note that this option does not stop you from manually invoking java serialization
#
- # The default value for this might be changed to off in future versions of Akka.
allow-java-serialization = on
+ # Log warnings when the Java serialization is used to serialize messages.
+ # Java serialization is not very performant and should not be used in production
+ # environments unless you don't care about performance and security. In that case
+ # you can turn this off.
+ warn-about-java-serializer-usage = on
+
+ # To be used with the above warn-about-java-serializer-usage
+ # When warn-about-java-serializer-usage = on, and this warn-on-no-serialization-verification = off,
+ # warnings are suppressed for classes extending NoSerializationVerificationNeeded
+ # to reduce noise.
+ warn-on-no-serialization-verification = on
+
# Entries for pluggable serializers and their bindings.
serializers {
java = "akka.serialization.JavaSerializer"
bytes = "akka.serialization.ByteArraySerializer"
-
+ primitive-long = "akka.serialization.LongSerializer"
+ primitive-int = "akka.serialization.IntSerializer"
+ primitive-string = "akka.serialization.StringSerializer"
+ primitive-bytestring = "akka.serialization.ByteStringSerializer"
primitive-boolean = "akka.serialization.BooleanSerializer"
}
"[B" = bytes
"java.io.Serializable" = java
- // TODO issue #27330: BooleanSerializer not enabled for serialization in 2.5.x yet
- #"java.lang.Boolean" = primitive-boolean
- #"scala.Boolean" = primitive-boolean
- }
-
- # Additional serialization-bindings that are replacing Java serialization are
- # defined in this section for backwards compatibility reasons. They are included
- # by default but can be excluded for backwards compatibility with Akka 2.4.x.
- # They can be disabled with enable-additional-serialization-bindings=off.
- #
- # This should only be needed for backwards compatibility reasons.
- enable-additional-serialization-bindings = on
-
- # Additional serialization-bindings that are replacing Java serialization are
- # defined in this section for backwards compatibility reasons. They are included
- # by default but can be excluded for backwards compatibility with Akka 2.4.x.
- # They can be disabled with enable-additional-serialization-bindings=off.
- additional-serialization-bindings {
+ "java.lang.String" = primitive-string
+ "akka.util.ByteString$ByteString1C" = primitive-bytestring
+ "akka.util.ByteString$ByteString1" = primitive-bytestring
+ "akka.util.ByteString$ByteStrings" = primitive-bytestring
+ "java.lang.Long" = primitive-long
+ "scala.Long" = primitive-long
+ "java.lang.Integer" = primitive-int
+ "scala.Int" = primitive-int
+ "java.lang.Boolean" = primitive-boolean
+ "scala.Boolean" = primitive-boolean
}
- # Log warnings when the default Java serialization is used to serialize messages.
- # The default serializer uses Java serialization which is not very performant and should not
- # be used in production environments unless you don't care about performance. In that case
- # you can turn this off.
- warn-about-java-serializer-usage = on
-
- # To be used with the above warn-about-java-serializer-usage
- # When warn-about-java-serializer-usage = on, and this warn-on-no-serialization-verification = off,
- # warnings are suppressed for classes extending NoSerializationVerificationNeeded
- # to reduce noize.
- warn-on-no-serialization-verification = on
-
# Configuration namespace of serialization identifiers.
# Each serializer implementation must have an entry in the following format:
# `akka.actor.serialization-identifiers."FQCN" = ID`
serialization-identifiers {
"akka.serialization.JavaSerializer" = 1
"akka.serialization.ByteArraySerializer" = 4
- "akka.serialization.BooleanSerializer" = 35
- }
-
- # Configuration items which are used by the akka.actor.ActorDSL._ methods
- dsl {
- # Maximum queue size of the actor created by newInbox(); this protects
- # against faulty programs which use select() and consistently miss messages
- inbox-size = 1000
- # Default timeout to assume for operations like Inbox.receive et al
- default-timeout = 5s
+ primitive-long = 18
+ primitive-int = 19
+ primitive-string = 20
+ primitive-bytestring = 21
+ primitive-boolean = 35
}
}
serialization.protobuf {
-
- # Additional classes that are allowed even if they are not defined in `serialization-bindings`.
- # It can be exact class name or name of super class or interfaces (one level).
- # This is useful when a class is not used for serialization any more and therefore removed
- # from `serialization-bindings`, but should still be possible to deserialize.
+ # deprecated, use `allowed-classes` instead
whitelist-class = [
"com.google.protobuf.GeneratedMessage",
"com.google.protobuf.GeneratedMessageV3",
"scalapb.GeneratedMessageCompanion",
- "akka.protobuf.GeneratedMessage"
+ "akka.protobuf.GeneratedMessage",
+ "akka.protobufv3.internal.GeneratedMessageV3"
]
+
+ # Additional classes that are allowed even if they are not defined in `serialization-bindings`.
+ # It can be exact class name or name of super class or interfaces (one level).
+ # This is useful when a class is not used for serialization any more and therefore removed
+ # from `serialization-bindings`, but should still be possible to deserialize.
+ allowed-classes = ${akka.serialization.protobuf.whitelist-class}
+
}
# Used to set the behavior of the scheduler.
# Fully qualified config path which holds the dispatcher configuration
# for the read/write worker actors
- worker-dispatcher = "akka.actor.default-dispatcher"
+ worker-dispatcher = "akka.actor.internal-dispatcher"
# Fully qualified config path which holds the dispatcher configuration
# for the selector management actors
- management-dispatcher = "akka.actor.default-dispatcher"
+ management-dispatcher = "akka.actor.internal-dispatcher"
# Fully qualified config path which holds the dispatcher configuration
# on which file IO tasks are scheduled
# Fully qualified config path which holds the dispatcher configuration
# for the read/write worker actors
- worker-dispatcher = "akka.actor.default-dispatcher"
+ worker-dispatcher = "akka.actor.internal-dispatcher"
# Fully qualified config path which holds the dispatcher configuration
# for the selector management actors
- management-dispatcher = "akka.actor.default-dispatcher"
+ management-dispatcher = "akka.actor.internal-dispatcher"
}
udp-connected {
# Fully qualified config path which holds the dispatcher configuration
# for the read/write worker actors
- worker-dispatcher = "akka.actor.default-dispatcher"
+ worker-dispatcher = "akka.actor.internal-dispatcher"
# Fully qualified config path which holds the dispatcher configuration
# for the selector management actors
- management-dispatcher = "akka.actor.default-dispatcher"
+ management-dispatcher = "akka.actor.internal-dispatcher"
}
dns {
# Fully qualified config path which holds the dispatcher configuration
# for the manager and resolver router actors.
# For actual router configuration see akka.actor.deployment./IO-DNS/*
- dispatcher = "akka.actor.default-dispatcher"
+ dispatcher = "akka.actor.internal-dispatcher"
# Name of the subconfig at path akka.io.dns, see inet-address below
#
# This property is related to `akka.jvm-shutdown-hooks` above.
run-by-jvm-shutdown-hook = on
+ # Run the coordinated shutdown when ActorSystem.terminate is called.
+ # Enabling this and disabling terminate-actor-system is not a supported
+ # combination (will throw ConfigurationException at startup).
+ run-by-actor-system-terminate = on
+
# When Coordinated Shutdown is triggered an instance of `Reason` is
# required. That value can be used to override the default settings.
# Only 'exit-jvm', 'exit-code' and 'terminate-actor-system' may be
#//#coordinated-shutdown-phases
}
+ #//#circuit-breaker-default
+ # Configuration for circuit breakers created with the APIs accepting an id to
+ # identify or look up the circuit breaker.
+ # Note: Circuit breakers created without ids are not affected by this configuration.
+ # A child configuration section with the same name as the circuit breaker identifier
+ # will be used, with fallback to the `akka.circuit-breaker.default` section.
+ circuit-breaker {
+
+ # Default configuration that is used if a configuration section
+ # with the circuit breaker identifier is not defined.
+ default {
+ # Number of failures before opening the circuit.
+ max-failures = 10
+
+ # Duration of time after which to consider a call a failure.
+ call-timeout = 10s
+
+ # Duration of time in open state after which to attempt to close
+ # the circuit, by first entering the half-open state.
+ reset-timeout = 15s
+
+ # The upper bound of reset-timeout
+ max-reset-timeout = 36500d
+
+ # Exponential backoff
+ # For details see https://en.wikipedia.org/wiki/Exponential_backoff
+ exponential-backoff = 1.0
+
+ # Additional random delay based on this factor is added to backoff
+ # For example 0.2 adds up to 20% delay
+ # In order to skip this additional delay set as 0
+ random-factor = 0.0
+
+ # A allowlist of fqcn of Exceptions that the CircuitBreaker
+ # should not consider failures. By default all exceptions are
+ # considered failures.
+ exception-allowlist = []
+ }
+ }
+ #//#circuit-breaker-default
+
}