EasyNetQ v6.0.0 Release Notes
Release Date: 2020-11-01 // over 3 years ago-
๐ This major release has aimed at two following goals:
โฌ๏ธ 1. Upgrading of the public interface to comply with modern requirements
- Fixing various bugs which were hard to eliminate without complex changes in the internals of the library.
A full list of changes can be found here.
โฑ IBus has been split into many interfaces(
IPubSub
,IRpc
,ISendReceive
,IScheduler
)Previously,
IBus
contained interfaces of three different things(Publish-Subscribe, Rpc and Send-Receive). Also, FuturePublish stuff was an extension toIBus
.โฑ Now, there are four interfaces(
IPubSub
,IRpc
,ISendReceive
,IScheduler
) andIBus
exposes them.Async-first API
๐ Most of the synchronous methods have been replaced by their asynchronous versions and have been exposed as extensions. In addition,
CancellationToken
has been added almost everywhere(if you see an async method without it, feel free to create a PR) and it is respected as much as possible.Exchange, Queue, Consumer declaration
๐ These declerations have been reworked for better extensibility: now it is possible to use custom arguments everywhere.
Reconnection mechanics have been reworked
EasyNetQ
completely relies on RabbitMQ.Client reconnection logic, butTopologyRecovery
is still disabled.Channel per operation
๐ Several channels are created on the publisher side to mitigate timeout issues caused by a mix of async and rpc commands on the same channel. See #1063 for more details.
Pulling Consumer
๐
PullingConsumer
has been introduced as a replacement forIAdvancedBus.IBasicGetResult Get(IQueue queue)
: auto ack or manual ack are supported as well as batch acks.โฑ Messages priority support in
IPubSub
,IRpc
,ISendReceive
andIScheduler
Nack from
IAdvancedBus
consumer callback.๐ Enchanced support of BasicReturn
โฑ Removal of class constraint from
IPubSub
,IRpc
,ISendReceive
andIScheduler
Strong naming
๐ Basic support of
Quorum Queues
andSingle Active Consumer
SendReceive.SendAsync
doesn't declare a queue anymoreOther patterns(PubSub, Rpc) worked a bit different from SendReceive before v6: only a consumer side(Subscribe, Respond methods) was responsible for a queue declaration, but the behaviour of SendReceive was different(as you mentioned queue declaration was on a consumer side(Receive method) and on publisher side(Send method) as well).
๐ง Declaration of a queue on a publisher side(Send method) limits the way how the queue could be declared(lazy, message TTL, queue limits and a lot of other things) because it looks like mixing both publisher and queue configuration could lead to a mess on a publisher side.