Releases: akkadotnet/Akka.Hosting
Akka.Hosting 1.5.55.1
1.5.55.1 October 27th 2025
Enhancements
- Expose options in journal and snapshot builders - resolved issue #690 by adding
Optionsproperty toAkkaPersistenceJournalBuilderandAkkaPersistenceSnapshotBuilder. Extension methods can now access configuration details without requiring options as explicit parameters, eliminating redundant option passing for connectivity health checks and other plugin-specific features
1.5.55 October 26th 2025
New Features
- Support custom health check registrations on Journal and Snapshot Builders - added API to support custom health check registrations for Akka.Persistence plugins, related to issue #678
- Add support for custom certificate validation callbacks - integrated the new
CertificateValidationCallbackfeature from Akka.NET v1.5.55, allowing users to provide custom certificate validation logic for SSL/TLS connections. Enables advanced scenarios including certificate pinning, subject/issuer matching, custom business validation rules, and advanced mTLS scenarios
Enhancements
- Add customizable tags parameter to health check methods - resolved issue #679 by adding new overload allowing custom tags for health checks while maintaining backward compatibility
- Made it easier to customize failureState and tags for all health checks - simplified health check configuration API for all health checks
Updates
1.5.55-beta1 October 26th 2025
New Features
- Support custom health check registrations on Journal and Snapshot Builders - added API to support custom health check registrations for Akka.Persistence plugins, related to issue #678
Enhancements
- Add customizable tags parameter to health check methods - resolved issue #679 by adding new overload allowing custom tags for health checks while maintaining backward compatibility
- Made it easier to customize failureState and tags for all health checks - simplified health check configuration API for all health checks
Updates
1.5.53 October 14th 2025
Bug Fixes
- Fix event adapter callback API not invoking adapters at runtime - resolved critical bug where event adapters configured via the callback API were not being invoked at runtime. This fix is especially important for users who have migrated to the callback pattern following the deprecation of
JournalOptions.Adaptersproperty. The issue was caused by unnecessary fallback configuration that interfered with adapter registration during HOCON merging.
Updates
- Add SSL/TLS configuration settings from Akka.NET 1.5.52 and 1.5.53 - updated SSL/TLS configuration options to support new features and settings introduced in Akka.NET versions 1.5.52 and 1.5.53
- Bump Akka version from 1.5.52 to 1.5.53
1.5.52 October 9th 2025
API Changes
- Deprecate JournalOptions.Adapters property in favor of callback API - resolved issue #665 by deprecating the
JournalOptions.Adaptersproperty. Users should migrate to the unified callback pattern:builder.WithJournal(options, journal => journal.AddWriteEventAdapter<T>(...)). The deprecated property will be removed in v1.6.0.
Updates
1.5.51.1 October 2nd 2025
Bug Fixes
- Fix journal health check registration without event adapters - resolved issue #666 where journal health checks were not being registered when using
.WithHealthCheck()without adding event adapters
1.5.51 October 1st 2025
New Features
- Added Akka.Persistence health checks - health check support for Akka.Persistence journal and snapshot stores with unified configuration API
- Added dependency-injected health checks -
WithHealthCheck<T>()generic methods for DI-resolved health checks
Updates
Akka.Hosting 1.5.55
1.5.55 October 26th 2025
New Features
- Support custom health check registrations on Journal and Snapshot Builders - added API to support custom health check registrations for Akka.Persistence plugins, related to issue #678
- Add support for custom certificate validation callbacks - integrated the new
CertificateValidationCallbackfeature from Akka.NET v1.5.55, allowing users to provide custom certificate validation logic for SSL/TLS connections. Enables advanced scenarios including certificate pinning, subject/issuer matching, custom business validation rules, and advanced mTLS scenarios
Enhancements
- Add customizable tags parameter to health check methods - resolved issue #679 by adding new overload allowing custom tags for health checks while maintaining backward compatibility
- Made it easier to customize failureState and tags for all health checks - simplified health check configuration API for all health checks
Updates
1.5.55-beta1 October 26th 2025
New Features
- Support custom health check registrations on Journal and Snapshot Builders - added API to support custom health check registrations for Akka.Persistence plugins, related to issue #678
Enhancements
- Add customizable tags parameter to health check methods - resolved issue #679 by adding new overload allowing custom tags for health checks while maintaining backward compatibility
- Made it easier to customize failureState and tags for all health checks - simplified health check configuration API for all health checks
Updates
1.5.53 October 14th 2025
Bug Fixes
- Fix event adapter callback API not invoking adapters at runtime - resolved critical bug where event adapters configured via the callback API were not being invoked at runtime. This fix is especially important for users who have migrated to the callback pattern following the deprecation of
JournalOptions.Adaptersproperty. The issue was caused by unnecessary fallback configuration that interfered with adapter registration during HOCON merging.
Updates
- Add SSL/TLS configuration settings from Akka.NET 1.5.52 and 1.5.53 - updated SSL/TLS configuration options to support new features and settings introduced in Akka.NET versions 1.5.52 and 1.5.53
- Bump Akka version from 1.5.52 to 1.5.53
1.5.52 October 9th 2025
API Changes
- Deprecate JournalOptions.Adapters property in favor of callback API - resolved issue #665 by deprecating the
JournalOptions.Adaptersproperty. Users should migrate to the unified callback pattern:builder.WithJournal(options, journal => journal.AddWriteEventAdapter<T>(...)). The deprecated property will be removed in v1.6.0.
Updates
1.5.51.1 October 2nd 2025
Bug Fixes
- Fix journal health check registration without event adapters - resolved issue #666 where journal health checks were not being registered when using
.WithHealthCheck()without adding event adapters
1.5.51 October 1st 2025
New Features
- Added Akka.Persistence health checks - health check support for Akka.Persistence journal and snapshot stores with unified configuration API
- Added dependency-injected health checks -
WithHealthCheck<T>()generic methods for DI-resolved health checks
Updates
Akka.Hosting 1.5.55-beta1
1.5.55-beta1 October 26th 2025
New Features
- Support custom health check registrations on Journal and Snapshot Builders - added API to support custom health check registrations for Akka.Persistence plugins, related to issue #678
Enhancements
- Add customizable tags parameter to health check methods - resolved issue #679 by adding new overload allowing custom tags for health checks while maintaining backward compatibility
- Made it easier to customize failureState and tags for all health checks - simplified health check configuration API for all health checks
Updates
Akka.Hosting 1.5.53
1.5.53 October 14th 2025
Bug Fixes
- Fix event adapter callback API not invoking adapters at runtime - resolved critical bug where event adapters configured via the callback API were not being invoked at runtime. This fix is especially important for users who have migrated to the callback pattern following the deprecation of
JournalOptions.Adaptersproperty. The issue was caused by unnecessary fallback configuration that interfered with adapter registration during HOCON merging.
Updates
- Add SSL/TLS configuration settings from Akka.NET 1.5.52 and 1.5.53 - updated SSL/TLS configuration options to support new features and settings introduced in Akka.NET versions 1.5.52 and 1.5.53
- Bump Akka version from 1.5.52 to 1.5.53
1.5.52 October 9th 2025
API Changes
- Deprecate JournalOptions.Adapters property in favor of callback API - resolved issue #665 by deprecating the
JournalOptions.Adaptersproperty. Users should migrate to the unified callback pattern:builder.WithJournal(options, journal => journal.AddWriteEventAdapter<T>(...)). The deprecated property will be removed in v1.6.0.
Updates
1.5.51.1 October 2nd 2025
Bug Fixes
- Fix journal health check registration without event adapters - resolved issue #666 where journal health checks were not being registered when using
.WithHealthCheck()without adding event adapters
1.5.51 October 1st 2025
New Features
- Added Akka.Persistence health checks - health check support for Akka.Persistence journal and snapshot stores with unified configuration API
- Added dependency-injected health checks -
WithHealthCheck<T>()generic methods for DI-resolved health checks
Updates
Akka.Hosting 1.5.52
1.5.52 October 9th 2025
API Changes
- Deprecate JournalOptions.Adapters property in favor of callback API - resolved issue #665 by deprecating the
JournalOptions.Adaptersproperty. Users should migrate to the unified callback pattern:builder.WithJournal(options, journal => journal.AddWriteEventAdapter<T>(...)). The deprecated property will be removed in v1.6.0.
Updates
Akka.Hosting 1.5.51.1
1.5.51.1 October 2nd 2025
Bug Fixes
- Fix journal health check registration without event adapters - resolved issue #666 where journal health checks were not being registered when using
.WithHealthCheck()without adding event adapters
1.5.51 October 1st 2025
New Features
- Added Akka.Persistence health checks - health check support for Akka.Persistence journal and snapshot stores with unified configuration API
- Added dependency-injected health checks -
WithHealthCheck<T>()generic methods for DI-resolved health checks
Updates
Akka.Hosting 1.5.51
1.5.51 October 1st 2025
New Features
- Added Akka.Persistence health checks - health check support for Akka.Persistence journal and snapshot stores with unified configuration API
- Added dependency-injected health checks -
WithHealthCheck<T>()generic methods for DI-resolved health checks
Updates
Akka.Hosting 1.5.50
1.5.50 September 23rd 2025
Akka.Hosting 1.5.49
1.5.49 September 15th 2025
Akka.Hosting 1.5.48.1
1.5.48.1 September 2nd 2025
Introduces new health check functionality and completey replaces Akka.HealthChecks
Problems with Akka.HealthChecks
There are a few major problems with Akka.HealthChecks:
- Hair triggers that can inadvertently nuke an otherwise functioning Akka.NET cluster: see petabridge/akkadotnet-healthcheck#278 and petabridge/akkadotnet-healthcheck#237 - we have had to do constant firefighting to get these right over the years. The fundamental problem is that Akka.HealthChecks tries to do too much and doesn't give the underlying systems time to recover, resulting in wild swings in availability. The new design approaches these things much more carefully and, generally, tries to use fewer, more meaningful health checks.
- Clunky and awkward to configure - you have to configure health checks in three places, you have to install several different NuGet packages, and there are a lot of settings + moving parts involved. A lot of this is legacy baggage from before Microsoft.Extensions.Diagnostics.HealthChecks existed.
- Difficult to customize - writing custom health checks with Akka.HealthCheck is... arduous, to say the least.
How This Feature Solves Them
- No additional packages - Akka.Hosting now takes a direct dependency on Microsoft.Extensions.Diagnostics.HealthChecks and exposes APIs for configuring Akka.NET-specific health checks that will be registered with the
HealthCheckService. - Automatic registration of health checks with
HealthCheckService- if you call any of theWithHealthCheckoverloads on theAkkaConfigurationBuilder, those types will automatically be registered with theMicrosoft.Extensions.Diagnostics.HealthChecks.HealthCheckServiceand they will "just work." No additional API calls required - happens automatically. - Automatic health checks for core Akka and Akka.Cluster - we ship with two built in checks out of the box: an
ActorSystemliveness check - if it's dead, the check fails. And an Akka.Cluster "have we joined the cluster yet?" readiness check.
These are not enabled by default - you have to opt-in to turning them on.
You can see what the outputs of this look like by running:
dotnet run --project src/Examples/Akka.Hosting.Asp.LoggingDemo/Akka.Hosting.Asp.LoggingDemo.csprojThis will expose the output of both of these healthchecks as pretty-printed JSON at http://localhost:5000/healthz
{
"status": "Healthy",
"totalDuration": "00:00:00.0002317",
"checks": [
{
"name": "ActorSystem Available",
"status": "Healthy",
"duration": "00:00:00.0000138",
"description": "ActorSystem is running.",
"tags": [
"akka"
],
"data": {}
},
{
"name": "cluster.join",
"status": "Healthy",
"duration": "00:00:00.0000248",
"description": "Successfully joined Akka.NET cluster after [0:00:06.3427821].",
"tags": [
"ready",
"akka.cluster",
"akka"
],
"data": {}
}
]
}- Easy to customize - we expose several types of helper methods, all called
WithHealthCheck, that make it very easy to define a health check. For example:
builder.WithHealthCheck("FooActor alive", async (system, registry, cancellationToken) =>
{
/*
* N.B. CancellationToken is set by the call to MSFT.EXT.DIAGNOSTICS.HEALTHCHECK,
* so that value could be "infinite" by default.
*
* Therefore, it might be a really, really good idea to guard this with a non-infinite
* timeout via a LinkedCancellationToken here.
*/
try
{
var fooActor = await registry.GetAsync<FooActor>(cancellationToken);
try
{
var r = await fooActor.Ask<ActorIdentity>(new Identify("foo"), cancellationToken: cancellationToken);
if (r.Subject.IsNobody())
return HealthCheckResult.Unhealthy("FooActor was alive but is now dead");
}
catch (Exception e)
{
return HealthCheckResult.Degraded("FooActor found but non-responsive", e);
}
}
catch (Exception e2)
{
return HealthCheckResult.Unhealthy("FooActor not found in registry", e2);
}
return HealthCheckResult.Healthy("fooActor found and responsive");
});A basic lambda function can handle it - the only reason this function is as complicated as this is because I wanted to include different reasons for why it failed in the description. You can also implement your own IAkkaHealthCheck and pass it into a WithHealthCheck method that way too.