Akka.NET v1.5 is Now Available

Akka.Hosting, Akka.Management, Akka.HealthCheck, .NET 6 Dual Targeting, Akka.Cluster.Sharding Overhaul, and Many More Improvements.

As of today, Akka.NET v1.5 is now available as a stable release package on NuGet for both .NET Standard 2.0 and NET 6.0. This is a big release aimed at addressing pain points for current Akka.NET users.

We’ve published a detailed article on the Akka.NET website that describes what’s new in Akka.NET v1.5, but we wanted to capture some of the highlights here.

A summary of our major changes include:

  • Introduction of Akka.Hosting - a new library that eliminates the need for HOCON configuration; offers deep + seamless integration with Microsoft.Extensions.Logging / Hosting / DependencyInjection / and Configuration; makes dependency injection a first-class citizen in Akka.NET with the ActorRegistry and IRequiredActor<T> types; implements ActorSystem life-cycle management best practices automatically; and makes it much easier to standardize and scale Akka.NET development across large development teams.
  • Introduction of Akka.Management - a new library that provides automatic Akka.Cluster bootstrapping and environment-specific service discovery capabilities. Akka.Management eliminates the need for things like Lighthouse - clusters can instead be formed by querying environments like Kubernetes, Azure Table Storage, or Amazon Web Services EC2/ECS. This also enables Akka.Cluster to run in much lighter-weight PaaS environments such as Akka.NET on Azure App Service or Akka.NET on Azure Container Apps.
  • Introduction of Akka.HealthCheck - the Akka.HealthCheck library has actually been around for a few years, but it’s been modernized to support Microsoft.Extensions.HealthCheck and includes automated liveness and readiness checks for Akka.Persistence and Akka.Cluster out of the box. It’s also very easy to write your own custom healthchecks.
  • .NET 6 Dual Targeting - Akka.NET v1.5 now dual targets .NET Standard 2.0 (same as Akka.NET v1.4) and .NET 6. We’ve done this in order to take advantage of newer .NET APIs for performance reasons. On .NET 6 Akka.NET in-memory messaging is now up to 50% faster as a result.
  • Akka.Cluster.Sharding Restructuring - in Akka.NET v1.5 we’ve split Akka.Cluster.Sharding’s state-store-mode into two parts: CoordinatorStore (akka.cluster.sharding.state-store-mode) and ShardStore (akka.cluster.sharding.remember-entities-store.) We’ve also added a new remember-entities-store mode: eventsourced. You should watch our “Akka NET v1.5 New Features and Upgrade Guide (10:30)” for a full summary of these changes, but the short version is that Akka.Cluster.Sharding is much more scalable, performant, and robust in Akka.NET v1.5.
  • Improved Logging Performance - we made some breaking changes to the logging API (but they’re still source-compatible) and the results are a 40% throughput improvement, 50%+ memory usage improvement for all of your user-defined actors. Watch our “Akka NET v1.5 New Features and Upgrade Guide (7:30)” for details.
  • Akka.Persistence.Query Backpressure Support - this change is invisible from a coding and API standpoint, but from a behavioral standpoint it is significant. Akka.Persistence.Query can now run hundreds of thousands of parallel queries without torching your database instance. See “ Scaling Akka.Persistence.Query to 100k+ Concurrent Queries for Large-Scale CQRS” for details.
  • Fully Asynchronous TestKit APIs - the entire Akka.TestKit now supports async methods for 100% of its capabilities. The old synchronous implementations still exist, but they’re now built on top of the async ones. This should improve the developer experience for writing tests and reduce the completion time of your test suite.
  • Akka.Streams Improvements - Akka.Streams now uses tremendously less memory than it did in Akka.NET v1.4 and many individual stream stages have been improved, made more robust, or extended to support new behaviors in Akka.NET v1.5.

We have many more features planned over the v1.5 life-cycle - such as:

  • Continuing our work on making CQRS a first-class citizen with Akka.NET;
  • Introducing better, easier to use methods for making actor-to-actor message delivery more reliable;
  • Leveraging more .NET 6 APIs for improved performance;
  • Retooling all of our examples and documentation to incorporate Akka.NET best practices, such as Akka.Hosting;
  • Addressing structural issues with Akka.Remote, serialization, and more.

These changes will also benefit new users of Akka.NET but we really built this for people who’ve been using Akka.NET for years - this work could have not been completed without your bug reports, usability complaints, and feedback in our chat.

From the bottom of our hearts: thank you.

If you liked this post, you can share it with your followers or follow us on Twitter!
Written by Aaron Stannard on March 2, 2023



Observe and Monitor Your Akka.NET Applications with Phobos

Did you know that Phobos can automatically instrument your Akka.NET applications with OpenTelemetry?

Click here to learn more.