This major release of this client introduces substantial improvements in terms of memory footprint and throughput. They come at the cost of minor but important breaking API changes covered below.
The client now requires .NET Framework 4.6.1 or .NET Standard 2.0.
Earlier versions are no longer supported by the 6.x
series.
Key improvements in this release have been the result of hard work by our stellar community members (in no particular order): @stebet, @bording, @Anarh2404, @danielmarbach, and others.
A full list of changes can be found in the GitHub milestone: 6.0.0
.
The client now uses the System.Memory
library for message and command payloads. This significantly
reduces object allocation and GC pressure for heavy workloads but also
potentially requires application changes: consumer delivery payloads are now of instance System.ReadOnlyMemory<byte>
instead of byte[]
.
While there's an implicit conversion for these types,
instances of System.ReadOnlyMemory<byte>
must be copied or consumed/deserialised before delivery handler completes.
Holding on to delivered payloads and referencing them at a later point is no longer safe.
The same applies to publishers and the IModel.BasicPublish
method: prefer using System.ReadOnlyMemory<byte>
over byte[]
and dont' assume that this memory can be retained and used outside of the scope of the publishing
function.
GitHub issue: #732
All timeout arguments now use System.TimeSpan
values.
GitHub issue: #688
No major changes here but this is potentially breaking. Only public classes that were never meant to be publicly used have been turned internal to the client.
GitHub issue: #714
The client now requires .NET Framework 4.6.1 or .NET Standard 2.0. Earlier versions are no longer supported.
GitHub issue: #686
Microsoft.Diagnostics.Tracing.EventSource
dependency has been removed. It was an annoying
dependency to have for some environments.
The library now supports source linking.
GitHub issue: #697
Source packages are now also distributed via NuGet.
Added a TLS option to enforce CRL checks for server certificates.
GitHub issue: #500
Please see the milestone for all changes:
Selected highlights:
GitHub PR: rabbitmq-dotnet-client#702
GitHub PR: rabbitmq-dotnet-client#654
GitHub PR: rabbitmq-dotnet-client#578
GitHub PR: rabbitmq-dotnet-client#579
GitHub PR: rabbitmq-dotnet-client#636
GitHub PR: rabbitmq-dotnet-client#368
GitHub PR: rabbitmq-dotnet-client#389
GitHub PR: rabbitmq-dotnet-client#377
GitHub PR: rabbitmq-dotnet-client#354
GitHub PR: rabbitmq-dotnet-client#307
GitHub issue: rabbitmq-dotnet-client#271
GitHub issue: rabbitmq-dotnet-client#94
GitHub issue: rabbitmq-dotnet-client#156
GitHub issue: rabbitmq-dotnet-client#255
GitHub issue: rabbitmq-dotnet-client#264
GitHub issue: rabbitmq-dotnet-client#294
GitHub issue: rabbitmq-dotnet-client#291
GitHub issue: rabbitmq-dotnet-client#288
GitHub issue: rabbitmq-dotnet-client#226
GitHub issue: rabbitmq-dotnet-client#330
GitHub PR: rabbitmq-dotnet-client#325
GitHub issue: rabbitmq-dotnet-client#269
Contributed by Brandon Ording.
GitHub issue: rabbitmq-dotnet-client#270
Contributed by Brandon Ording.
GitHub issue: rabbitmq-dotnet-client#263
GitHub issue: rabbitmq-dotnet-client#257
4.1.0
was released on September 14th, 2016.
Switched to a "thread-per-model" approach in the ConsumerWorkService
.
The TaskScheduler property on ConnectionFactory
has been obsoleted and can no
longer be used to control concurrency.
Utility class changes:
BatchingWorkPool
has been removedConsumerWorkService
no longer has a constructor that takes aTaskScheduler
ConsumerWorkService.MAX_THUNK_EXECUTION_BATCH_SIZE
has been removedConsumerWorkService
no longer has theExecuteThunk
orRegisterKey
methods
Contributed by Brandon Ording and Szymon Kulec.
GH issue: rabbitmq-dotnet-client#251
GH issue: rabbitmq-dotnet-client#244
ConnectionFactory#CreateConnection
could deadlock in some circumstances.
GH issue: rabbitmq-dotnet-client#239.
GH issue: rabbitmq-dotnet-client#238