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.
The most exciting new feature 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.
See also release notes for Akka 2.3-M1.
Migrating from Older Releases
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”.
v2.3-M1 compared to Akka v2.3-M2:
- 55 tickets closed, see 2.3-M2 milestone in Assembla
- 636 files changed, 28433 insertions(+), 14733 deletions(-)
- … and a total of 15 committers!
commits added removed 41 17268 7489 Patrik Nordwall 13 703 184 Björn Antonsson 11 6992 2316 Martin Krasser 4 59 18 Roland Kuhn 4 52 15 Johannes Rudolph 3 290 2357 Endre Sándor Varga 3 16 31 Viktor Klang 2 48 2 Marcus Ljungblad 1 1 1 MariusSeritan 1 1 1 Levi Notik 1 4 4 Sander Mak 1 1 1 Ben McCann 1 644 17 Gaston M. Tonietti 1 35 23 rob.david 1 0 50 Jonas Boner