Akka 2.3-M2 (PRE-RELEASE MILESTONE)
- December 16, 2013
We—the Akka committers—are pleased to be able to announce the availability of Akka 2.3-M2 (PRE-RELEASE MILESTONE TWO). It is a preview on what is going to become Akka 2.3, so please give us feedback! This is probably the last milestone before the first 2.3.0 release candidate, which is estimated to be available at the end of January 2014.
The most exciting new feature in 2.3 is Akka Persistence, developed by Martin Krasser in collaboration with the Akka team. It allows stateful actors to persist their internal state so that it can be recovered when an actor is started, restarted by a supervisor or migrated in a cluster. It also allows stateful actors to recover from JVM crashes or other disasters. The key concept behind Akka Persistence is that instead of storing an actor’s state you persist the changes that are applied to it. These changes are immutable facts that are appended to a journal, which allows for very high transaction rates and efficient replication. Stateful actors are recovered by replaying stored changes, rebuilding the actors’ internal state. Akka Persistence also provides point-to-point communication channels with at-least-once message delivery semantics.
Akka Persistence features in 2.3-M2 include:
- event sourcing and command sourcing
- automatic or manual recovery
- state snapshots to reduce recovery times
- journal and snapshot store plugin APIs
- channels as gateways to other services
- channels for reliable delivery of messages
- persistent FSMs
Other notable features in this release are:
- Sharding of actors in a cluster. The typical use case for this feature is when you have many stateful actors that together consume more resources (e.g. memory) than fit on one machine. You need to distribute them across several nodes in the cluster and you want to be able to interact with them using their logical identifier, but without having to care about their physical location in the cluster, which might also change over time. It could for example be actors representing Aggregate Roots in Domain-Driven Design terminology.
- ActorSelection was made faster and not blocked by intermediate actors performing long-running tasks.
- Allow outgoing connection to a previously failed and now restarted actor system with same host and port without having to wait for the quarantine period to elapse.
- Allow actor selections in untrusted mode, restricted using a white-list.
- Fixed actor creation size and speed regression.
- The application can specify custom logging Mapped Diagnostic Context (MDC) values, contributed by Gaston Tonietti.
See also release notes for Akka 2.3-M1.
When migrating an existing project from Akka 2.2.3 please have a look at the migration guide.
The artifacts comprising this release have been published to https://oss.sonatype.org/content/repositories/releases/ and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.10”.
Take it for a spin!