Releases: rabbitmq/rabbitmq-stream-dotnet-client
v1.0.1
The client is distributed via NuGet.
Enhancements
- Add consumer name property by @Gsantomaggio in #203
- Add cancellation token during subscription by @Gsantomaggio in #206
Full Changelog: v1.0.0...v1.0.1
v1.0.0
The client is distributed via NuGet.
Breaking changes
- Adding
ILogger
abstraction and replacingLogEventSource
with it by @ricardSiliuk in #190 (See the documentation) - Rename the
SuperStreamConsumer
toRawSuperStreamConsumer
by @Gsantomaggio in #192
Enhancements
- Add SuperStream consumer info by @Gsantomaggio in #187
- Make the AddressResolver more generic by @Gsantomaggio in #189
- Add documentation for logging by @Gsantomaggio in #193
- Complete Super Stream Single Active consumer example by @Gsantomaggio in #197
- Change the error messages by @Gsantomaggio in #198
- Reduce the class's visibility by @Gsantomaggio in #199
- Sync-up editorconfig with RabbitMQ .NET client by @lukebakken in #194
- Add TaskCompletionSource to wait the test instead by @Gsantomaggio in #201
Full Changelog: v1.0.0-rc.8...v1.0.0
v1.0.0-rc.8
The client is distributed via NuGet.
Enhancements
- Add
GetAwaiter().GetResult();
on MessageHandler in #184 . It avoids thread pool exhaustion. Thanks to @ricsiLT for testing it. - Expose MessagesBufferSize in #183
Full Changelog: v1.0.0-rc.7...v1.0.0-rc.8
v1.0.0-rc.7
The client is distributed via NuGet.
Note
This release contains important performance improvements.
Enhancements
- Fix style in select classes to be more dotnet-like by @ricardSiliuk in #155
- Improve consumer performance see #180 and #181 by @sungam3r
- Improve publish in #182
New Contributors
Full Changelog: v1.0.0-rc.6...v1.0.0-rc.7
v1.0.0-rc.6
The client is distributed via NuGet.
Breaking changes
This version contains a few braking changes; please read the following documentation.
-
Why so many changes?
The idea is to give a similar JavaStream client user experience.
-
Classes concepts:
Class Description How to get Note RawProducer Low-Level producer system.CreateRawProducer(new RawProducerConfig("stream")
RawSuperStreamProducer Low Level Super Stream Producer `system.RawCreateSuperStreamProducer(new RawSuperStreamProducerConfig("superStream")` Producer Hight Level producer. Producer.Create(new ProducerConfig(system, stream))
-Handle RawProducer
andRawSuperStreamProducer
- Auto reconnect
- Auto publishing id
- Confirm Messages with errors (timeout..etc)RawConsumer Low Level consumer system.CreateRawConsumer(newRawConsumerConfig("stream")
RawSuperStreamConsumer Low Level Super Stream Consumer `system.RawCreateSuperStreamConsumer(new RawSuperStreamConsumerConfig("superStream")` Consumer Hight Level Consumer. Consumer.Create(new ConsumerConfig(system, stream))
-Handle RawConsumer and RawCreateSuperStreamConsumer
- Auto reconnect -
Class mapping from version:
v1.0.0-rc.5
tov1.0.0-rc.6
<= v1.0.0-rc.5
>= v1.0.0-rc.6
Producer
RawProducer
Consumer
RawConsumer
ReliableProducer
Producer
ReliableConsumer
Consumer
Update example:
<=v1.0.0-rc.5 from |
>= v1.0.0-rc.6 to |
---|---|
await system.CreateProducer(new ProducerConfig() {stream = "mystream"}) |
`await system.CreateRawProducer(new |
RawProducerConfig(streamName))` | |
await system.CreateConsumer(new ConsumerConfig() {stream = "mystream"}) |
`await system.CreateRawConsumer(new |
RawConsumerConfig(streamName))` | |
await ReliableProducer.CreateReliableProducer(new ReliableProducerConfig() {..} |
`await Producer.Create(new |
ProducerConfig(system,stream)` | |
await ReliableConsumer.CreateReliableConsumer(new ReliableConsumerConfig() {..} |
`await Consumer.Create(new |
ConsumerConfig(system,stream)` |
-
Configuration changes:
All the
*Config
classes contain a constructor with the mandatory fields. So it is easier for the user understand how to use the class.For example:
new RawProducerConfig(stream)
<-- the stream is mandatory -
Exceptions
All the validations are now under the
ArgumentException
Exception
For example:
new RawProducerConfig("")
<-- raisesArgumentException
-
Questions:
Q: Why the
Producer
/Consumer
classes are not provided directly bysystem
?
A: We'd like to leave the low-level classes as easy as possible. A user can implement a similarProducer
starting fromRawProducer
andRawSuperStreamProducer
as we did.Q: Which classes should I use?
A: We suggest usingProducer
/Consumer
classesQ: When to use
RawProducer
?
A: When you want a low-level producer and you what to handle the reconnections/confirmation differently. Note:RawProducer
could be faster than
theProducer
under certain situations since it doesn't have to handle the sent/received messages.
Release notes
Enhancements
- Add Single Active Consumer by @Gsantomaggio in #152
- Add SuperStream for ReliableProducer by @Gsantomaggio in #172
- Add Super Stream Consumer by @Gsantomaggio in #174
- Change definition of MaxLengthBytes stream specification - #165 by @PaoloLaurenti in #166
Bug Fix
- Fix occurrences of sync-over-async by @Hawxy in #164
- Fix Reconnect ReliableProducer/ ReliableConsumer in case leader is down by @Gsantomaggio in #163
- Add client cert example to readme by @ricsiLT in #169
- AMQP Parser: Change the Read and Write for Strings by @Gsantomaggio in #176
Breaking changes
- Refactor Classes names by @Gsantomaggio in #177
New Contributors
- @Hawxy made their first contribution in #164
- @PaoloLaurenti made their first contribution in #166
Full Changelog: v1.0.0-rc.5...v1.0.0-rc.6
v1.0.0-rc.5
The client is distributed via NuGet.
Enhancements
- Batch send by @Gsantomaggio in #142
- Handle more types in the AMQP 1.0 GetSize by @Gsantomaggio in #158
- Handle CreditResponse when a subscription is unknown on the server by @jonnepmyra in #159
Bug Fix
- Fix "Data instances with a length of 255 bytes are wrongly written" by @lukebakken and @Timz95 in #161
- GitHub actions updates by @lukebakken in #162
New Contributors
- @jonnepmyra made their first contribution in #159
- @Timz95 made their first contribution in #161
Full Changelog: v1.0.0-rc.4...v1.0.0-rc.5
v1.0.0-rc.4
The client is distributed via NuGet.
Enhancements
- Add exceptions to events by @ricsiLT in #128
- Ignore all branches during the create event for the publish workflow by @lukebakken in #132
- Add configurable heartbeat by @ricsiLT in #130
Bug Fix
- Fix a bug with Heartbeat values >59s by @ricsiLT in #135
- Change locator reconnection by @Gsantomaggio in #134
- Improved client timeout handling by @ricsiLT in #139
- Avoid reconnection fix by @Gsantomaggio in #140
- Refactor Confirmation Pipe and HeartBeat start by @Gsantomaggio in #141
Full Changelog: v1.0.0-rc.3...v1.0.0-rc.4
v1.0.0-rc.3
The client is distributed via NuGet.
Bug Fix
- Change the DNS validation in #126
Full Changelog: v1.0.0-rc.2...v1.0.0-rc.3
v1.0.0-rc.2
The client is distributed via NuGet.
Enhancements
- Enrich SocketException when opening a connection by @ricardSiliuk in #124
New Contributors
- @ricardSiliuk made their first contribution in #124
Full Changelog: v1.0.0-rc.1...v1.0.0-rc.2
v1.0.0-rc.1
The client is distributed via NuGet.
Enhancements
- Reliable Producer and Consumer #104 #112
- Documentation by @simone-fariselli in #108
- Max segment size by @simone-fariselli in #110
- Version this project using MinVer b in #116
- Add producer MessagesBufferSize in #56
- Get version via reflection in #119
- Replace with TimeSpan in #120
- Handle infinite looping when encountering a misconfigured load balancer by @ricsiLT in #121
Bug Fix:
- Fix close consumer in #113
New Contributors
Full Changelog: v1.0.0-beta.5...v1.0.0-rc.1