Akka.NET v1.5.42
1.5.42 May 21st, 2025
Akka.NET v1.5.42 contains several bug fixes and also adds new quality of life features to Akka.IO.Tcp
, Akka.Persistence
, Akka.Pattern
, and Akka.Cluster.Tools.DistributedPubSub
.
- IO.Tcp: Cleanup API
- IO.Tcp: Fix
TcpListener
connection queue problem - Persistence: Allow user to use supervision strategy on journal and snapshot store
- Core: Add cancellation token to
CircuitBreaker
API to signal timed out operations - Persistence: Change all
CircuitBreaker
protected method API to use cancellation token - Core: Leverage Exception...when pattern
- IO.Tcp: Add
TcpListenerStatistics
and subscription methods - Cluster.Tools: Modernize
DistributedPubSub
code - Cluster.Tools: Optimize
DistributedPubSub
memory allocation - Cluster.Tools: Improve
DistributedPubSub
DeadLetter
log message - Core: Refactor immutable collection builders to use simpler
CreateBuilder
pattern - IO.Tcp: Redesign
TcpConnection
- Cluster.Tools: Add
PublishWithAck
feature toDistributedPubSub
Warning
This release contains several public API breaking changes to Akka.IO.Tcp and Akka.Persistence
Akka.Pattern.CircuitBreaker
Backward compatible API changes:
- New
.WithCircuitBreaker()
APIs were added that changes the protected function delegate to accept a newCancellationToken
argument. - Old
.WithCircuitBreaker()
APIs were marked as obsolete.
Akka.Cluster.Tools.DistributedPubSub
The documentation for the new PublishWithAck
feature can be read here
Backward compatible API changes:
- There is a new
DistributedPubSubSettings
constructor that leverages the newPublishWithAck
feature. The old constructor is marked as obsolete.
Akka.Persistence
The documentation for the new supervision strategy for journal and snapshot-store feature can be read here
Breaking API changes:
Due to changes in CircuitBreaker.WithCircuitBreaker()
APIs, several Akka.Persistence
journal and snapshot-store were changed in a breaking manner. You will need to consider these changes if you have your own specific Akka.Persistence
plugin implementation and needed to upgrade to this version of Akka.
- AsyncWriteJournal
DeleteMessagesToAsync()
ReadHighestSequenceNrAsync()
WriteMessagesAsync
- SnapshotStore
- Both
DeleteAsync()
methods LoadAsync()
SaveAsync()
- Both
Akka.IO.Tcp
The Akka.IO.Tcp has been redesigned to improve its reliability, visibility, and performance. This, unfortunately, requires some breaking changes to be introduced into the code base.
New features:
- The
TcpListener
actor now accepts a newSubscribeToTcpListenerStats
message. Subscribers will receive regularTcpListenerStatistics
metrics report from theTcpListener
. - The new
UnsubscribeFromTcpListenerStats
message can be used to unsubscribe from theTcpListener
Backward compatible changes:
- The
Akka.IO.Tcp.Bind
command now contain a new settableTcpSettings
property. - The
Akka.IO.Tcp.Connect
command now contain a new settableTcpSettings
property. - The
Akka.IO.TcpSettings
class have several of its unused properties deprecated and/or changed:- The
ReceivedMessageSizeLimit
property has been deprecated, replaced with the newMaxFrameSizeBytes
property. - New
ReceiveBufferSize
property added. - New
SendBufferSize
property added.
- The
Breaking API changes:
Akka.IO.Tcp.Instance
static field has been removed.Akka.IO.TcpExt.BufferPool
static property has been removed.
To see the full set of changes in Akka.NET v1.5.42, click here.
5 contributors since release 1.5.41
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
15 | 3480 | 2864 | Aaron Stannard |
5 | 1711 | 713 | Gregorius Soedharmo |
4 | 72 | 100 | Simon Cropp |
1 | 172 | 51 | Arjen Smits |
1 | 16 | 60 | JuYoung Kim |
What's Changed
- Akka.Benchmark: harden
TcpOperationsBenchmark
by @Aaronontheweb in #7620 - Akka.IO.Tcp: cleaning up
TBD
s and API junk by @Aaronontheweb in #7621 - Akka.IO: fix
TcpListener
connection queue problem by @Aaronontheweb in #7623 - Feature/7582 by @Danthar in #7595
- Convert flaky SelectAsync test to [Fact] for CI validation by @CodingPythonMan in #7625
- Introduce CancellationToken to
WithCircuitBreaker
by @Arkatufus in #7624 - leverage exception when by @SimonCropp in #7614
- Akka.IO: added
TcpListenerStatistics
and subscription methods by @Aaronontheweb in #7633 - Try Incrementalist 1.1.0-beta1 by @Aaronontheweb in #7635
- Remove unused
Build
stage fromREAME.md
by @Aaronontheweb in #7636 - Akka.IO Benchmarks: cache outbound
Tcp.Write
by @Aaronontheweb in #7638 - Modernize DistributedPubSub code by @Arkatufus in #7640
- docs: add real
Akka.Discovery
andAkka.Management
documentation to the website by @Aaronontheweb in #7641 - Akka.Actor: remove
TBD
s by @Aaronontheweb in #7643 - Akka.Benchmarks: adding
ActorPath.GetHashCode
benchmarks by @Aaronontheweb in #7645 - Optimize DistributedPubSub memory allocation by @Arkatufus in #7642
DistributedPubSub
: clearer logging whenDeadLetter
publishing due to no subscribers by @Aaronontheweb in #7646- Akka.Benchmarks: run real duplex messaging over Akka.IO.Tcp by @Aaronontheweb in #7651
- Akka.IO: validate we don't lose data when processing
Tcp.Received
by @Aaronontheweb in #7648 - remove redundant field initialization in ImmutableDictionaryKeepOrder by @SimonCropp in #7655
- remove TestValue output by @SimonCropp in #7653
- use simpler CreateBuilder API for immutabled collection builders by @SimonCropp in #7656
- Akka.IO: redesign
TcpConnection
by @Aaronontheweb in #7637 - Add wait-for-subscribers feature by @Arkatufus in #7652
- Add PublishWithAck documentation by @Arkatufus in #7665
- Update RELEASE_NOTES.md for 1.5.42 release by @Arkatufus in #7668
Full Changelog: 1.5.41...1.5.42