Akka 1.5.72
Akka.NET
![]()
Akka.NET is a .NET port of the popular Akka project from the Scala / Java community. We are an idiomatic .NET implementation of the actor model built on top of the .NET Common Language Runtime.
- Website: https://getakka.net/
- Twitter 🐦: AkkaDotNet
- Discussions 📣: Akka.NET GitHub Discussions
- Chat 💬: Akka.NET on Discord
- StackOverflow ✔️: Akka.NET on StackOverflow
Akka.NET is a .NET Foundation project.
How is Akka.NET Used?
Akka.NET can be used in-process or inside large, distributed real-time systems; we support a wide variety of use cases.
Akka.NET can be used to solve the following types of problems:
- Concurrency - Akka.NET actors only process messages one-at-a-time and they do so in first in, first out (FIFO) order; this means that any application state internal to an actor is automatically thread-safe without having to use
locks or any other shared-memory synchronization mechanisms. - Stream Processing - Akka.NET actors and Akka.Streams make it easy to build streaming applications, used for processing incoming streams of data or incoming streams of live events such as UI or network events inside native applications.
- Event-Driven Programming - actors make it easy to build event-driven applications, as actors' message-processing routines naturally express these types of designs.
- Event Sourcing and CQRS - Akka.Persistence, used by actors to make their state re-entrant and recoverable across restarts or migrations between nodes, natively supports event sourcing. Akka.Persistence.Query can be used to compute CQRS-style projections and materialized views from Akka.Persistence data.
- Location Transparency - Akka.Remote makes it simple for actors in remote processes to transparently communicate with each other.
- Highly Available, Fault-Tolerant Distributed Systems - Akka.Cluster, Akka.Cluster.Sharding, and other tools built on top of Akka.Cluster make it possible to build highly available and fault-tolerant distributed systems by leveraging peer-to-peer programming models with topology-aware message routing and distribution.
- Low Latency, High Throughput - Akka.NET aims to be low latency and high throughput, processing 10s millions of messages per second in-memory and hundreds of thousands of messages per second over remote connections.
Where Can I Learn Akka.NET?
You can start by taking the Akka.NET Bootcamp, but there are many other great learning resources for Akka.NET Online.
- Petabridge's Akka.NET Videos on YouTube
- ".NET Conf - When and How to Use the Actor Model An Introduction to Akka.NET Actors"
- Reactive Applications with Akka.NET
- Akka.NET Succinctly
Build Status
| Stage | Status | |
|---|---|---|
| NuGet Pack | ||
| .NET Framework Unit Tests | ||
| .NET Unit Tests (Windows) | ||
| .NET Unit Tests (Linux) | ||
| .NET MultiNode Tests (Windows) | ||
| .NET MultiNode Tests (Linux) | ||
| Docs |
Install Akka.NET via NuGet
If you want to include Akka.NET in your project, you can install it directly from NuGet
To install Akka.NET Distributed Actor Framework, run the following command in the Package Manager Console
PM> Install-Package Akka.Hosting
Akka.Hosting includes the base Akka NuGet package and also provides an easy interface to integrate Akka.NET with the most-used parts of the Microsoft.Extensions ecosystem: Configuration, Logging, Hosting, and DependencyInjection. We encourage developers to adopt it.
And if you need F# support:
PM> Install-Package Akka.FSharp
Akka.NET Project Templates
To create your own Akka.NET projects using our templates (Akka.Templates), install them via the dotnet CLI:
dotnet new install "Akka.Templates::*"
This will make our templates available via dotnet new on the CLI and as new project templates inside any .NET IDE such as Visual Studio or JetBrains Rider. You can view the full list of templates included in our package here: https://github.com/akkadotnet/akkadotnet-templates#available-templates
Builds
Please see Building Akka.NET.
To access nightly Akka.NET builds, please see the instructions here.
Support
If you need help getting started with Akka.NET, there's a number of great community resources online:
- Subscribe to the Akka.NET project feed on Twitter: https://twitter.com/AkkaDotNet (@AkkaDotNet)
- Join the Akka.NET Discord: https://discord.gg/GSCfPwhbWP
- Ask Akka.NET questions on Stack Overflow: http://stackoverflow.com/questions/tagged/akka.net
If you and your company are interested in getting professional Akka.NET support, you can contact Petabridge for dedicated Akka.NET support.
No packages depend on Akka.
Akka.NET v1.5.72 backports a non-blocking Cluster extension startup, test-infrastructure hardening, a Cluster.Sharding hand-over fix, and a batch of de-flaked specs from dev.
Starting with this release, Akka.Hosting ships from this repository. The Akka.Hosting, Akka.Remote.Hosting, Akka.Cluster.Hosting, Akka.Persistence.Hosting, Akka.Hosting.TestKit, and Akka.Hosting.TestKit.Xunit2 packages are now built, tested, and published alongside every Akka.NET release at the same version number.
Akka.Hosting
- Akka.Hosting moves into the akka.net repository - The six Hosting packages now live under
src/contrib/hostingand share the Akka.NET version and release cadence. No package IDs, namespaces, or public APIs changed; bumpAkka.Hosting.*to the same version asAkka.*. Hosting-only hotfix versions (such as1.5.60.1) no longer exist: a Hosting fix ships in the next Akka.NET patch release. The documentation moved to getakka.net/articles/hosting. The akkadotnet/Akka.Hosting repository will be archived and keeps the full commit history and release notes for versions up to 1.5.71; the import was taken from commitcefe3c4c. - Microsoft.Extensions minimum version moves to 10.0 - The
Akka,Akka.DependencyInjectionand allAkka.Hosting.*packages now requireMicrosoft.Extensions.*10.0.0 or later (previously 6.0 for the core packages and 9.0 for Akka.Hosting). The 10.0 packages still shipnetstandard2.0assets, so applications on .NET Framework 4.8, .NET 6 and .NET 8 keep working; NuGet will lift the transitiveMicrosoft.Extensions.*references in those applications to 10.0.x. Akka.Hosting'sOpenTelemetrydependency moves to 1.15.3 or later, which clears GHSA-g94r-2vxg-569j.
Akka.TestKit / Akka.TestKit.Xunit
- TestKit.Xunit: implement the async dispose chain -
Akka.TestKit.Xunit.TestKitnow implementsInitializeAsync/DisposeAsyncdirectly instead of relying on a derived class's own no-op overrides. Breaking change: a derived spec that already declares its ownInitializeAsync/DisposeAsyncmust mark themoverrideand call the base method, or the build fails withCS0114.Dispose(bool)no longer terminates theActorSystemby itself; the publicDispose()/DisposeAsync()entry points do, after calling the base chain. - Put the DotNetty batching override under akka.remote - The TestKit's write-batching override now lands under the key the transport actually reads. Every TestKit-hosted and multi-node test system runs with DotNetty write batching genuinely off for the first time.
- Add TestKitBase.ShutdownAsync - New public
TestKitBase.ShutdownAsyncoverloads shut anActorSystemdown without blocking a thread pool worker. - Eliminate the MultiNodeTestRunner conductor port race - The conductor node now binds port 0 and reports the real port over a stdout sentinel, instead of guessing a free port in advance, removing a race that could leave every other node waiting out a timeout against a conductor that never started. Adds the public
ConductorBindExceptionandConductorPortSentineltypes, and a 20-minute backstop that kills a node process that never exits on its own.
Akka.Streams
- Tcp Unbind completes immediately when idle -
ServerBinding.Unbind()used to always wait out the subscription timeout even when no connection was pending. It now completes right away in that case, and still correctly waits when a connection was accepted but never subscribed to.
Akka.Cluster.Sharding
- Arm the remember-entities write timeout with updating-state-timeout - Remember-entities writes are now timed against
updating-state-timeout(5 seconds by default), matching whatreference.confalways documented, instead ofwaiting-for-state-timeout(2 seconds). Migration: if you raisedwaiting-for-state-timeoutto give a slow remember-entities store more time, move that value toupdating-state-timeoutinstead - it no longer affects the write path. - A coordinator hand-over only stops the local ShardRegion when the node is leaving - Fixes #8583: a routine singleton hand-over during a rolling restart no longer stops a
ShardRegionthat isn't leaving the cluster, which used to leave that region permanently unusable for the life of the process.
Akka.DistributedData
- Fix Replicator.IsKnownNode to trust members first seen as Leaving/Exiting/Downed - A
Replicatorstarted after a member had already begun leaving no longer silently drops that member's writes and gossip.
Akka.Cluster
- Prevent removed cluster members from being resurrected by stale gossip - Gossip now carries UID-scoped removal tombstones and retains them for 24 hours by default (
akka.cluster.prune-gossip-tombstones-after). The wire change is rolling-upgrade compatible: older nodes ignore the added protobuf field and upgraded nodes treat its absence as an empty tombstone set. Protection becomes fully effective after every node is upgraded; removals that occur while old nodes remain in the cluster are not guaranteed to retain their tombstones. - Akka.Cluster: make Cluster extension startup non-blocking - The
Clusterconstructor no longer blocks on a 20 second ask, andakka.actor.creation-timeoutis no longer consulted by Akka.Cluster at all (Akka.Cluster.Sharding still uses it to bound its own start-up asks). This removes the "Failed to startup Cluster" failure mode, which could shut down a healthy node whenever every thread the startup needed was parked - a small fork-join or other dedicated dispatcher pool, or a stock pool starved under load. Behavior note:Cluster.Get()now returns before core initialization completes, and the cluster's internal actor tree (/system/cluster/core,/system/cluster/core/daemon,/system/cluster/heartbeatReceiver) is created afterCluster.Get()returns rather than before it. All public cluster APIs are message-based, so typical code is unaffected; code that usedCluster.Get()as a "core is started" synchronization point, or that resolves one of those internal paths right after obtaining the extension, should awaitJoinAsync/RegisterOnMemberUpor a cluster event instead. - Akka.Cluster: route user commands through /system/cluster for the extension's lifetime; LeaveAsync re-sends its Leave - All user-issued cluster commands (
Subscribe,Join,Leave,Down, ...) now route through/system/clusterfor the entire lifetime of the extension - two extra local mailbox hops on this low-traffic control plane - instead of switching to a direct core-daemon reference once startup resolves one, so back-to-back commands from one caller stay in order for good, not just during startup. A lostLeaveno longer wedges every laterLeaveAsync()for the life of the process. Behavior note: callingLeave()/LeaveAsync()again after the extension has already shut down now produces a dead-letteredClusterUserAction.Leave- worth knowing about for dead-letter alerting orEventFilter.DeadLetterassertions.
Testing
- Bugfix5962Spec de-flaked for the non-blocking cluster startup - the spec's raw 1 second
ResolveOneagainst/system/cluster/core/daemon/downingProviderraced the async cluster-extension init #8359 introduces above; replaced with a dilated retrying resolve, a dynamic port, and an asyncTaskCompletionSourcemember-up signal. - De-flaked a large batch of Cluster, Cluster.Sharding, Cluster.Tools, DistributedData, Streams, and Remote specs, both single-process and multi-node, to remove timing-sensitive failures under load.
3 contributors since release 1.5.71
| COMMITS | LOC+ | LOC- | AUTHOR |
|---|---|---|---|
| 66 | 35268 | 2030 | Aaron Stannard |
| 1 | 94 | 47 | Bojan Janjatović |
| 1 | 2 | 1 | Matt Kotsenas |
To see the full set of changes in Akka.NET v1.5.72, click here.
.NET 6.0
- Akka.Analyzers (>= 0.3.3)
- Microsoft.Extensions.ObjectPool (>= 10.0.0)
- Newtonsoft.Json (>= 13.0.1)
- System.Collections.Immutable (>= 6.0.1)
- System.Configuration.ConfigurationManager (>= 6.0.1)
.NET Standard 2.0
- Akka.Analyzers (>= 0.3.3)
- Microsoft.Extensions.ObjectPool (>= 10.0.0)
- Newtonsoft.Json (>= 13.0.1)
- System.Collections.Immutable (>= 6.0.1)
- System.Configuration.ConfigurationManager (>= 6.0.1)
- System.Diagnostics.DiagnosticSource (>= 6.0.2)
- System.Reflection.Emit (>= 4.7.0)
- System.Threading.Channels (>= 6.0.0)
| Version | Downloads | Last updated |
|---|---|---|
| 1.6.0-beta3 | 3 | 10/07/2026 |
| 1.6.0-beta2 | 2 | 10/07/2026 |
| 1.6.0-beta1 | 8 | 10/02/2026 |
| 1.5.73 | 3 | 10/06/2026 |
| 1.5.72 | 6 | 10/04/2026 |
| 1.5.71 | 21 | 08/28/2026 |
| 1.5.70 | 37 | 07/04/2026 |
| 1.5.70-beta2 | 25 | 07/02/2026 |
| 1.5.70-beta1 | 26 | 06/25/2026 |
| 1.5.69 | 30 | 06/14/2026 |
| 1.5.68 | 34 | 05/19/2026 |
| 1.5.67 | 46 | 04/26/2026 |
| 1.5.66 | 43 | 04/26/2026 |
| 1.5.65 | 45 | 04/12/2026 |
| 1.5.64 | 42 | 04/02/2026 |
| 1.5.63 | 43 | 03/26/2026 |
| 1.5.62 | 32 | 03/05/2026 |
| 1.5.61 | 45 | 03/02/2026 |
| 1.5.60 | 44 | 02/10/2026 |
| 1.5.59 | 49 | 01/28/2026 |
| 1.5.58 | 45 | 01/11/2026 |
| 1.5.57 | 60 | 12/12/2025 |
| 1.5.57-beta2 | 48 | 12/11/2025 |
| 1.5.57-beta1 | 46 | 12/11/2025 |
| 1.5.56 | 46 | 12/11/2025 |
| 1.5.55 | 47 | 12/13/2025 |
| 1.5.54 | 47 | 12/11/2025 |
| 1.5.53 | 45 | 12/14/2025 |
| 1.5.52 | 43 | 12/13/2025 |
| 1.5.51 | 44 | 12/13/2025 |
| 1.5.50 | 3 | 09/30/2026 |
| 1.5.49 | 42 | 12/12/2025 |
| 1.5.48 | 46 | 12/11/2025 |
| 1.5.47 | 43 | 12/12/2025 |
| 1.5.46 | 3 | 09/27/2026 |
| 1.5.45 | 1 | 10/06/2026 |
| 1.5.44 | 3 | 09/30/2026 |
| 1.5.43 | 44 | 12/11/2025 |
| 1.5.42 | 51 | 12/11/2025 |
| 1.5.41 | 51 | 12/11/2025 |
| 1.5.40 | 50 | 12/11/2025 |
| 1.5.39 | 45 | 12/11/2025 |
| 1.5.38 | 4 | 09/28/2026 |
| 1.5.37 | 44 | 12/15/2025 |
| 1.5.36 | 43 | 12/13/2025 |
| 1.5.35 | 1 | 10/06/2026 |
| 1.5.34 | 45 | 12/12/2025 |
| 1.5.33 | 30 | 12/12/2025 |
| 1.5.32 | 1 | 09/28/2026 |
| 1.5.31 | 57 | 12/11/2025 |
| 1.5.30 | 1 | 10/06/2026 |
| 1.5.29 | 53 | 12/11/2025 |
| 1.5.28 | 2 | 09/28/2026 |
| 1.5.28-beta1 | 1 | 10/06/2026 |
| 1.5.27.1 | 2 | 09/29/2026 |
| 1.5.27 | 38 | 12/11/2025 |
| 1.5.27-beta2 | 41 | 12/11/2025 |
| 1.5.27-beta1 | 45 | 12/11/2025 |
| 1.5.26 | 51 | 12/11/2025 |
| 1.5.25 | 2 | 10/06/2026 |
| 1.5.24 | 2 | 09/29/2026 |
| 1.5.23 | 1 | 10/06/2026 |
| 1.5.22 | 31 | 12/12/2025 |
| 1.5.21 | 3 | 09/28/2026 |
| 1.5.20 | 3 | 09/28/2026 |
| 1.5.19 | 45 | 12/11/2025 |
| 1.5.18 | 2 | 10/05/2026 |
| 1.5.17.1 | 44 | 12/12/2025 |
| 1.5.17 | 49 | 12/12/2025 |
| 1.5.16 | 2 | 10/02/2026 |
| 1.5.15 | 3 | 09/28/2026 |
| 1.5.14 | 49 | 12/12/2025 |
| 1.5.13 | 2 | 09/29/2026 |
| 1.5.13-beta1 | 2 | 09/30/2026 |
| 1.5.12 | 51 | 12/11/2025 |
| 1.5.11 | 45 | 12/11/2025 |
| 1.5.10 | 47 | 12/10/2025 |
| 1.5.9 | 45 | 12/11/2025 |
| 1.5.8 | 59 | 12/12/2025 |
| 1.5.7 | 50 | 12/11/2025 |
| 1.5.6 | 1 | 10/06/2026 |
| 1.5.5 | 28 | 12/13/2025 |
| 1.5.4 | 2 | 10/02/2026 |
| 1.5.3 | 1 | 10/06/2026 |
| 1.5.2 | 35 | 12/11/2025 |
| 1.5.1 | 0 | 03/15/2023 |
| 1.5.0 | 4 | 09/27/2026 |
| 1.5.0-beta6 | 49 | 12/14/2025 |
| 1.5.0-beta5 | 42 | 12/13/2025 |
| 1.5.0-beta4 | 3 | 09/28/2026 |
| 1.5.0-beta3 | 1 | 10/06/2026 |
| 1.5.0-beta2 | 45 | 12/14/2025 |
| 1.5.0-beta1 | 2 | 10/06/2026 |
| 1.5.0-alpha4 | 1 | 10/06/2026 |
| 1.5.0-alpha3 | 43 | 12/11/2025 |
| 1.5.0-alpha2 | 47 | 12/12/2025 |
| 1.5.0-alpha1 | 1 | 09/30/2026 |
| 1.4.51 | 34 | 12/13/2025 |
| 1.4.50 | 4 | 10/03/2026 |
| 1.4.49 | 47 | 12/12/2025 |
| 1.4.49-beta1 | 47 | 12/11/2025 |
| 1.4.48 | 48 | 12/11/2025 |
| 1.4.47 | 2 | 10/01/2026 |
| 1.4.46 | 38 | 12/12/2025 |
| 1.4.45 | 1 | 10/06/2026 |
| 1.4.44 | 44 | 12/11/2025 |
| 1.4.43 | 49 | 12/11/2025 |
| 1.4.42 | 1 | 10/06/2026 |
| 1.4.41 | 43 | 12/13/2025 |
| 1.4.40 | 2 | 09/27/2026 |
| 1.4.39 | 2 | 09/28/2026 |
| 1.4.38 | 2 | 10/06/2026 |
| 1.4.37 | 1 | 10/06/2026 |
| 1.4.36 | 44 | 12/15/2025 |
| 1.4.35 | 2 | 10/02/2026 |
| 1.4.34 | 44 | 12/13/2025 |
| 1.4.33 | 2 | 09/30/2026 |
| 1.4.32 | 49 | 12/12/2025 |
| 1.4.31 | 49 | 12/11/2025 |
| 1.4.30 | 50 | 12/12/2025 |
| 1.4.29 | 44 | 12/11/2025 |
| 1.4.28 | 3 | 09/28/2026 |
| 1.4.27 | 2 | 10/03/2026 |
| 1.4.26 | 42 | 12/13/2025 |
| 1.4.25 | 48 | 12/12/2025 |
| 1.4.24 | 3 | 09/30/2026 |
| 1.4.23 | 48 | 12/11/2025 |
| 1.4.22 | 50 | 12/11/2025 |
| 1.4.21 | 2 | 09/29/2026 |
| 1.4.21-beta1 | 42 | 12/12/2025 |
| 1.4.20 | 41 | 12/15/2025 |
| 1.4.19 | 47 | 12/15/2025 |
| 1.4.18 | 0 | 03/23/2021 |
| 1.4.17 | 2 | 09/29/2026 |
| 1.4.16 | 49 | 12/12/2025 |
| 1.4.15 | 48 | 12/11/2025 |
| 1.4.14 | 0 | 12/30/2020 |
| 1.4.13 | 3 | 09/29/2026 |
| 1.4.12 | 2 | 10/07/2026 |
| 1.4.11 | 45 | 12/15/2025 |
| 1.4.10 | 51 | 12/15/2025 |
| 1.4.9 | 2 | 10/01/2026 |
| 1.4.8 | 43 | 12/12/2025 |
| 1.4.7 | 64 | 12/11/2025 |
| 1.4.6 | 51 | 12/10/2025 |
| 1.4.5 | 2 | 10/06/2026 |
| 1.4.4 | 47 | 12/12/2025 |
| 1.4.3 | 2 | 10/02/2026 |
| 1.4.2 | 32 | 12/12/2025 |
| 1.4.1 | 1 | 09/30/2026 |
| 1.4.1-rc3 | 1 | 09/28/2026 |
| 1.4.1-rc2 | 1 | 09/29/2026 |
| 1.4.1-rc1 | 44 | 12/14/2025 |
| 1.4.0 | 45 | 12/14/2025 |
| 1.4.0-beta4 | 39 | 12/16/2025 |
| 1.4.0-beta3 | 43 | 12/13/2025 |
| 1.4.0-beta2 | 2 | 10/06/2026 |
| 1.4.0-beta1 | 2 | 10/04/2026 |
| 1.3.19 | 55 | 12/11/2025 |
| 1.3.18 | 44 | 12/12/2025 |
| 1.3.17 | 36 | 12/10/2025 |
| 1.3.16 | 2 | 09/28/2026 |
| 1.3.15 | 47 | 12/11/2025 |
| 1.3.14 | 47 | 12/11/2025 |
| 1.3.13 | 50 | 12/11/2025 |
| 1.3.12 | 45 | 12/11/2025 |
| 1.3.11 | 46 | 12/11/2025 |
| 1.3.10 | 39 | 12/15/2025 |
| 1.3.9 | 51 | 12/11/2025 |
| 1.3.8 | 58 | 12/12/2025 |
| 1.3.7 | 40 | 12/12/2025 |
| 1.3.6 | 46 | 12/12/2025 |
| 1.3.5 | 1 | 09/30/2026 |
| 1.3.4 | 1 | 10/06/2026 |
| 1.3.3 | 35 | 12/15/2025 |
| 1.3.2 | 1 | 10/07/2026 |
| 1.3.1 | 47 | 12/12/2025 |
| 1.3.0 | 51 | 12/15/2025 |
| 1.2.3 | 1 | 10/03/2026 |
| 1.2.2 | 3 | 10/02/2026 |
| 1.2.1 | 44 | 12/11/2025 |
| 1.2.0 | 50 | 12/12/2025 |
| 1.1.3 | 47 | 12/15/2025 |
| 1.1.2 | 43 | 12/15/2025 |
| 1.1.1 | 45 | 12/14/2025 |
| 1.1.0 | 52 | 12/11/2025 |
| 1.0.8 | 2 | 10/03/2026 |
| 1.0.7 | 49 | 12/11/2025 |
| 1.0.6 | 51 | 12/11/2025 |
| 1.0.5 | 3 | 10/01/2026 |
| 1.0.4 | 53 | 12/12/2025 |
| 1.0.3 | 3 | 10/02/2026 |
| 1.0.2 | 52 | 12/11/2025 |
| 1.0.1 | 1 | 10/06/2026 |
| 1.0.0 | 1 | 10/01/2026 |
| 1.0.0-dev1504032244 | 1 | 10/06/2026 |
| 0.8.0 | 40 | 12/15/2025 |
| 0.7.1 | 45 | 12/11/2025 |
| 0.7.0 | 43 | 12/14/2025 |
| 0.6.4 | 42 | 12/11/2025 |
| 0.6.3 | 1 | 10/06/2026 |
| 0.6.2 | 39 | 12/11/2025 |
| 0.6.1 | 2 | 10/06/2026 |
| 0.6.0 | 45 | 12/11/2025 |
| 0.5.8 | 45 | 12/12/2025 |
| 0.5.2 | 48 | 12/12/2025 |
| 0.5.0 | 49 | 12/11/2025 |
| 0.2.1-beta | 45 | 12/11/2025 |
| 0.2.0-beta | 1 | 10/06/2026 |