|
| 1 | +## Changes Between 6.3.1 and 6.4.0 |
| 2 | + |
| 3 | +This release adds the ability to specify a maximum message size when receiving data. The default |
| 4 | +values are: |
| 5 | + |
| 6 | +* RabbitMQ .NET client 7.0.0 and beyond: 128MiB |
| 7 | +* RabbitMQ .NET client 6.4.0 up to 7.0.0: no limit by default |
| 8 | + |
| 9 | +Receiving a frame that specifies a content larger than the limit will throw an execption. This is to |
| 10 | +help prevent situations as described in [this discussion](https://github.com/rabbitmq/rabbitmq-dotnet-client/discussions/1213). |
| 11 | + |
| 12 | +To set a limit, use the set `MaxMessageSize` on your `ConnectionFactory` before opening connections: |
| 13 | + |
| 14 | +``` |
| 15 | +// This sets the limit to 512MiB |
| 16 | +var cf = new ConnectionFactory(); |
| 17 | +cf.MaxMessageSize = 536870912; |
| 18 | +var conn = cf.CreateConnection()` |
| 19 | +``` |
| 20 | + |
| 21 | +GitHub milestone: [`6.4.0`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/58?closed=1) |
| 22 | +Diff: [link](https://github.com/rabbitmq/rabbitmq-dotnet-client/compare/v6.3.1...v6.4.0) |
| 23 | + |
| 24 | +## Changes Between 6.3.0 and 6.3.1 |
| 25 | + |
| 26 | +GitHub milestone: [`6.3.1`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/57?closed=1) |
| 27 | +Diff: [link](https://github.com/rabbitmq/rabbitmq-dotnet-client/compare/v6.3.0...v6.3.1) |
| 28 | + |
| 29 | +## Changes Between 6.2.4 and 6.3.0 |
| 30 | + |
| 31 | +GitHub milestone: [`6.3.0`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/52?closed=1) |
| 32 | +Diff: [link](https://github.com/rabbitmq/rabbitmq-dotnet-client/compare/v6.2.4...v6.3.0) |
| 33 | + |
| 34 | +## Changes Between 6.2.3 and 6.2.4 |
| 35 | + |
| 36 | +GitHub milestone: [`6.2.4`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/55?closed=1) |
| 37 | + |
| 38 | +This release contains some important bug fixes: |
| 39 | + |
| 40 | +* [Fix connection leaks on auto recovery](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/1145) |
| 41 | +* [Fix buffer overflow when writing long strings](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/1162) |
| 42 | +* [Fix regression resulting in `ObjectDisposedException`](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/1154) |
| 43 | +* [Fix regression that could affect consuming after auto recovery](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/1148) |
| 44 | + |
| 45 | +## Changes Between 6.2.1 and 6.2.3 |
| 46 | + |
| 47 | +GitHub milestone: [`6.2.3`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/54?closed=1) |
| 48 | +GitHub milestone: [`6.2.2`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/51?closed=1) |
| 49 | + |
| 50 | +## Changes Between 6.2.0 and 6.2.1 |
| 51 | + |
| 52 | +6.2.0 was published incorrectly, resulting in version 6.2.1 |
| 53 | + |
| 54 | +GitHub milestone: [`6.2.1`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/50?closed=1). |
| 55 | + |
| 56 | +## Changes Between 6.1.0 and 6.2.0 |
| 57 | + |
| 58 | +A full list of changes can be found in the GitHub milestone: [`6.2.0`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/49?closed=1). |
| 59 | + |
| 60 | +## Changes Between 6.0.0 and 6.1.0 |
| 61 | + |
| 62 | +This release continues with improvements to memory use and object allocations. |
| 63 | + |
| 64 | +A full list of changes can be found in the GitHub milestone: [`6.1.0`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/48?closed=1). |
| 65 | + |
| 66 | +## Changes Between 5.2.0 and 6.0.0 |
| 67 | + |
| 68 | +This major release of this client introduces substantial improvements |
| 69 | +in terms of memory footprint and throughput. They come at the cost |
| 70 | +of minor but important **breaking API changes** covered below. |
| 71 | + |
| 72 | +The client now requires .NET Framework 4.6.1 or .NET Standard 2.0. |
| 73 | +Earlier versions are no longer supported by the `6.x` series. |
| 74 | + |
| 75 | +Key improvements in this release have been the result of hard work by |
| 76 | +our stellar community members (in no particular order): @stebet, @bording, |
| 77 | +@Anarh2404, @danielmarbach, and others. |
| 78 | + |
| 79 | +A full list of changes can be found in the GitHub milestone: [`6.0.0`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/41?closed=1). |
| 80 | + |
| 81 | +### The Switch to System.Memory (and [Significantly Lower Memory Footprint](https://stebet.net/real-world-example-of-reducing-allocations-using-span-t-and-memory-t/) that Comes with It) |
| 82 | + |
| 83 | +The client now uses the [`System.Memory` library](https://www.nuget.org/packages/System.Memory/) for message and command payloads. This significantly |
| 84 | +reduces object allocation and GC pressure for heavy workloads but also |
| 85 | +**potentially requires application changes**: consumer delivery payloads are now of instance [`System.ReadOnlyMemory<byte>`](https://docs.microsoft.com/en-us/dotnet/api/system.readonlymemory-1?view=netcore-3.1) |
| 86 | +instead of `byte[]`. |
| 87 | + |
| 88 | +While there's an implicit conversion for these types, |
| 89 | +instances of `System.ReadOnlyMemory<byte>` **must be copied or consumed/deserialised before delivery handler completes**. |
| 90 | +Holding on to delivered payloads and referencing them at a later point **is no longer safe**. |
| 91 | + |
| 92 | +The same applies to publishers and the `IModel.BasicPublish` method: prefer using `System.ReadOnlyMemory<byte>` |
| 93 | +over `byte[]` and dont' assume that this memory can be retained and used outside of the scope of the publishing |
| 94 | +function. |
| 95 | + |
| 96 | +GitHub issue: [#732](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/732) |
| 97 | + |
| 98 | +### Timeouts Use `System.TimeSpan` |
| 99 | + |
| 100 | +All timeout arguments now use `System.TimeSpan` values. |
| 101 | + |
| 102 | +GitHub issue: [#688](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/688) |
| 103 | + |
| 104 | +### Reduced Public API Surface |
| 105 | + |
| 106 | +No major changes here but this is potentially breaking. Only public classes that were never meant |
| 107 | +to be publicly used have been turned internal to the client. |
| 108 | + |
| 109 | +GitHub issue: [#714](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/714) |
| 110 | + |
| 111 | +### Requires .NET Framework 4.6.1 or .NET Standard 2.0 |
| 112 | + |
| 113 | +The client now requires .NET Framework 4.6.1 or .NET Standard 2.0. Earlier versions are no longer |
| 114 | +supported. |
| 115 | + |
| 116 | +GitHub issue: [#686](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/686) |
| 117 | + |
| 118 | +### `Microsoft.Diagnostics.Tracing.EventSource` Dependency Dropped |
| 119 | + |
| 120 | +`Microsoft.Diagnostics.Tracing.EventSource` dependency has been removed. It was an annoying |
| 121 | +dependency to have for some environments. |
| 122 | + |
| 123 | +### Source Linking |
| 124 | + |
| 125 | +The library now supports source linking. |
| 126 | + |
| 127 | +GitHub issue: [#697](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/697) |
| 128 | + |
| 129 | +### NuGet Source Packages |
| 130 | + |
| 131 | +Source packages are now also distributed via NuGet. |
| 132 | + |
| 133 | +### CRL Checks for Server x.509 (TLS) Certificates |
| 134 | + |
| 135 | +Added a TLS option to enforce CRL checks for server certificates. |
| 136 | + |
| 137 | +GitHub issue: [#500](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/500) |
| 138 | + |
| 139 | + |
| 140 | + |
| 141 | +## Changes Between 5.1.2 and 5.2.0 |
| 142 | + |
| 143 | +Please see the milestone for all changes: |
| 144 | + |
| 145 | +[GitHub `5.2.0` Milestone](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/42?closed=1) |
| 146 | + |
| 147 | +Selected highlights: |
| 148 | + |
| 149 | +### Add support for `netstandard2.0` |
| 150 | + |
| 151 | +GitHub issues: [#428](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/428), [#435](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/435) |
| 152 | + |
| 153 | +### Re-introduce lock for all socket writes |
| 154 | + |
| 155 | +GitHub PR: [rabbitmq-dotnet-client#702](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/702) |
| 156 | + |
| 157 | + |
| 158 | + |
| 159 | +## Changes Between 5.1.1 and 5.1.2 |
| 160 | + |
| 161 | +### Bump System.Net.Security to 4.3.2 |
| 162 | + |
| 163 | +## Changes Between 5.1.0 and 5.1.1 |
| 164 | + |
| 165 | +### Deprecate messaging patterns |
| 166 | + |
| 167 | +GitHub PR: [rabbitmq-dotnet-client#654](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/654) |
| 168 | + |
| 169 | +### Fix stack overflow |
| 170 | + |
| 171 | +GitHub PR: [rabbitmq-dotnet-client#578](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/578) |
| 172 | + |
| 173 | +### Byte conversion support |
| 174 | + |
| 175 | +GitHub PR: [rabbitmq-dotnet-client#579](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/579) |
| 176 | + |
| 177 | +### Heartbeat write deadlock fix |
| 178 | + |
| 179 | +GitHub PR: [rabbitmq-dotnet-client#636](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/636) |
| 180 | + |
| 181 | + |
| 182 | +## Changes Between 5.0.x and 5.1.0 |
| 183 | + |
| 184 | +### Batch Publishing |
| 185 | + |
| 186 | +GitHub PR: [rabbitmq-dotnet-client#368](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/368) |
| 187 | + |
| 188 | +### Introduced a Static Property to AmqpTcpEndpoint to specify the default TLS Protocol Version(s) |
| 189 | + |
| 190 | +GitHub PR: [rabbitmq-dotnet-client#389](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/389) |
| 191 | + |
| 192 | +### All Exceptions are Collected When Selecting an Endpoint |
| 193 | + |
| 194 | +GitHub PR: [rabbitmq-dotnet-client#377](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/377) |
| 195 | + |
| 196 | +### Reduced Lock Contention for Frame Writes |
| 197 | + |
| 198 | +GitHub PR: [rabbitmq-dotnet-client#354](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/354) |
| 199 | + |
| 200 | + |
| 201 | +## Changes Between 4.1.x and 5.0.1 |
| 202 | + |
| 203 | +### Async consumers |
| 204 | + |
| 205 | +GitHub PR: [rabbitmq-dotnet-client#307](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/307) |
| 206 | + |
| 207 | +### Enable connection recovery by default |
| 208 | + |
| 209 | +GitHub issue: [rabbitmq-dotnet-client#271](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/271) |
| 210 | + |
| 211 | +### Replace Console.WriteLine logging with EventSource |
| 212 | + |
| 213 | +GitHub issue: [rabbitmq-dotnet-client#94](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/94) |
| 214 | + |
| 215 | +### Add events for connection recovery errors and connection success |
| 216 | + |
| 217 | +GitHub issue: [rabbitmq-dotnet-client#156](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/156) |
| 218 | + |
| 219 | +### noAck renamed to autoAck |
| 220 | + |
| 221 | +GitHub issue: [rabbitmq-dotnet-client#255](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/255) |
| 222 | + |
| 223 | +### Make uri and Uri setters in ConnectionFactory obsolete |
| 224 | + |
| 225 | +GitHub issue: [rabbitmq-dotnet-client#264](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/264) |
| 226 | + |
| 227 | +### Ensure connection recovery does not keep going after the connection has been closed |
| 228 | + |
| 229 | +GitHub issue: [rabbitmq-dotnet-client#294](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/294) |
| 230 | + |
| 231 | +### Synchronize access to the manuallyClosed field in AutorecoveringConnection. |
| 232 | + |
| 233 | +GitHub issue: [rabbitmq-dotnet-client#291](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/291) |
| 234 | + |
| 235 | +### Use concurrent collections inside AutorecoveringConnection |
| 236 | + |
| 237 | +GitHub issue: [rabbitmq-dotnet-client#288](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/288) |
| 238 | + |
| 239 | +### Add property to allow an endpoint to specify the address family |
| 240 | + |
| 241 | +GitHub issue: [rabbitmq-dotnet-client#226](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/226) |
| 242 | + |
| 243 | +### Fix potential EventingBasicConsumer race condition |
| 244 | + |
| 245 | +### Re-introduce a Uri property on IConnectionFactory |
| 246 | + |
| 247 | +GitHub issue: [rabbitmq-dotnet-client#330](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/330) |
| 248 | + |
| 249 | +### Add CreateConnection overload to IConnectionFactory |
| 250 | + |
| 251 | +GitHub PR: [rabbitmq-dotnet-client#325](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/325) |
| 252 | + |
| 253 | +## Changes Between 4.1.0 and 4.1.1 |
| 254 | + |
| 255 | +### Fixed XML Documentation Generation |
| 256 | + |
| 257 | +GitHub issue: [rabbitmq-dotnet-client#269](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/269) |
| 258 | + |
| 259 | +Contributed by Brandon Ording. |
| 260 | + |
| 261 | +### Fixed WinRT Project Build |
| 262 | + |
| 263 | +GitHub issue: [rabbitmq-dotnet-client#270](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/270) |
| 264 | + |
| 265 | +Contributed by Brandon Ording. |
| 266 | + |
| 267 | +### `TcpClientAdapter` Nullifies Socket Field on Close |
| 268 | + |
| 269 | +GitHub issue: [rabbitmq-dotnet-client#263](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/263) |
| 270 | + |
| 271 | +### `HeartbeatReadTimerCallback` Handles Potential `NullReferenceException` |
| 272 | + |
| 273 | +GitHub issue: [rabbitmq-dotnet-client#257](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/257) |
| 274 | + |
| 275 | + |
| 276 | +## Changes Between 4.0.2 and 4.1.0 |
| 277 | + |
| 278 | +`4.1.0` was released on **September 14th, 2016**. |
| 279 | + |
| 280 | +### No lock contention at consumer work service |
| 281 | + |
| 282 | +Switched to a "thread-per-model" approach in the `ConsumerWorkService`. |
| 283 | + |
| 284 | +The TaskScheduler property on `ConnectionFactory` has been obsoleted and can no |
| 285 | +longer be used to control concurrency. |
| 286 | + |
| 287 | +Utility class changes: |
| 288 | + |
| 289 | +- `BatchingWorkPool` has been removed |
| 290 | +- `ConsumerWorkService` no longer has a constructor that takes a `TaskScheduler` |
| 291 | +- `ConsumerWorkService.MAX_THUNK_EXECUTION_BATCH_SIZE` has been removed |
| 292 | +- `ConsumerWorkService` no longer has the `ExecuteThunk` or `RegisterKey` methods |
| 293 | + |
| 294 | +Contributed by Brandon Ording and Szymon Kulec. |
| 295 | + |
| 296 | +GH issue: [rabbitmq-dotnet-client#251](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/251) |
| 297 | + |
| 298 | + |
| 299 | +## Changes Between 4.0.1 and 4.0.2 (September 1st, 2016) |
| 300 | + |
| 301 | +### TcpClientAdapter Didn't Respect IP Address Family |
| 302 | + |
| 303 | +GH issue: [rabbitmq-dotnet-client#244](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/244) |
| 304 | + |
| 305 | +## Changes Between 4.0.0 and 4.0.1 (August 25th, 2016) |
| 306 | + |
| 307 | +### `ConnectionFactory#CreateConnection` Deadlock |
| 308 | + |
| 309 | +`ConnectionFactory#CreateConnection` could deadlock in some circumstances. |
| 310 | + |
| 311 | +GH issue: [rabbitmq-dotnet-client#239](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/239). |
| 312 | + |
| 313 | +### Occasional `NullReferenceException` in Endpoint Resolution |
| 314 | + |
| 315 | +GH issue: [rabbitmq-dotnet-client#238](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/238) |
0 commit comments