GitHub milestone for RabbitMQ.Client
version 7.0.0
What's Changed
- Fall back to rabbitmqctl (or rabbitmqctl.bat) if RABBITMQ_RABBITMQCTL_PATH or umbrella path are not available by @michaelklishin in #818
- Switch to Verify for API approval test by @bording in #820
- AutorecoveringConnection uses ContinuationTimeout from ConnectionFactory by @AndrzejKrol in #823
- Do not throw on invalid ReplyTo address by @ig-sinicyn in #828
- Introduce PublicationAddress.TryParse and switch BasicProperties.ReplyToAddress to use it by @michaelklishin in #831
- Throw ObjectDisposedException when required by @lukebakken in #832
- Restore Constants class as public by @lukebakken in #833
- Move Constants to RabbitMQ.Client by @lukebakken in #834
- Replacing usage of ManualResetEvent with ManualResetEventSlim by @stebet in #837
- Optimizing memory usage even further. by @stebet in #824
- Using a linked list for fast efficient tracking of [publisher confirm] delivery tags by @stebet in #836
- Adding System.Threading.Channels for simplified, better performing code. by @stebet in #835
- Using interpolated strings for better code readability. by @stebet in #840
- getting rid of a Func allocation by @bollhals in #841
- Making sure AsyncEventHandlers are all run. Fixes issue #838. by @stebet in #839
- simplify WriteShortstr by @bollhals in #845
- Deletion of unreachable code by @Pliner in #847
- Deletion of unused UseBackgroundThreadsForIO by @Pliner in #846
- eliminate allocations from InboundFrame by @bollhals in #848
- Frame optimizations by @stebet in #844
- Delete AutoClose from SessionManager by @Pliner in #852
- Fixing rethrown exceptions to properly preserve stackframes. by @stebet in #850
- throw ArgumentOutOfRangeException when table key is too long (> 255) by @bollhals in #849
- Adding BinaryPrimitives support for NETSTANDARD targets by @stebet in #851
- Minor improvements and optimizations by @bollhals in #842
- simplify missed heartbeat recognition by @bollhals in #854
- remove task yield by @bollhals in #855
- Fix RabbitMQ version parsing by @lukebakken in #862
- Report a Uri scheme of "amqps" in AmqpTcpEndpoint.ToString() iff SslOption is enabled in #864
- Re-merge pull request #855 from bollhals/remove.task.yield by @lukebakken in #863
- Prep for 6.1.1 by @lukebakken in #870
- Fix AppVeyor build by @lukebakken in #871
- Move BinaryTableValue to public section by @BenBorn in #880
- Ability to do concurrent dispatches both on the async as well as the sync consumer by @danielmarbach in #866
- Refactor: extracted RabbitMQ node management functions from IntegrationFixture by @pergh in #884
- Switch WorkPool of ConsumerWorkService to channels by @danielmarbach in #882
- use cached empty BasicProperties when null by @bollhals in #887
- add size hint variable for PublishBatch creation by @bollhals in #888
- fix issue 868 by @bollhals in #878
- Implement BasicPublishBatch with ReadOnlyMemory by @danielmarbach in #865
- 7.x: remove deprecated message publishing method overloads by @danielmarbach in #895
- precompute sizes and and simplify BasicProperties presence by @bollhals in #890
- Edit docs by @JeremyMahieu in #896
- Do DNS resolution before connection attempt by @JeremyMahieu in #893
- Unify on IModel by @danielmarbach in #858
- Missing ConfigureAwait in TcpClientAdapter by @danielmarbach in #897
- Pull ProcessingConcurrency into connection factory interface by @danielmarbach in #899
- Getting rid of Command allocations by @bollhals in #902
- Rename ProcessingConcurrency to ConsumerDispatchConcurrency by @danielmarbach in #905
- More descriptive exception in WriteShortstr by @tmasternak in #908
- Reduce work allocations by @bollhals in #910
- cache the frameHeaderBuffer & rentedArray by @bollhals in #911
- simplify ack/nack handling by @bollhals in #912
- Switch to Mozilla Public License 2.0 (MPL 2.0) by @dcorbacho in #916
- reduce the amount of times we rent / return from arraypool by @bollhals in #919
- Running Tests docs: quotes for setting env vars in windows by @JeremyMahieu in #921
- Typo in Extension class name by @JeremyMahieu in #922
- remove APIGen project by @bollhals in #924
- Command Id instead of class & method id by @bollhals in #925
- change AmqpVersion to struct by @bollhals in #927
- change from Memory to ReadOnlyMemory by @bollhals in #928
- Update dependencies to latest versions by @lukebakken in #929
- Code cleanups by @stebet in #931
- Add FxCop with only ConfigureAwait rule enabled for now by @danielmarbach in #932
- Expose events ConsumerTagChangeAfterRecovery and QueueNameChangeAfterRecovery by @paulomf in #935
- Remove IAsyncConnectionFactory by @danielmarbach in #933
- Use span directly instead of reader / writer for methods & properties by @bollhals in #936
- Switch FxCop to PrivateAssets="All" by @danielmarbach in #941
- Breaking public API change: fold IAutorecoveringConnection [back] into IConnection by @michaelklishin in #943
- Make sure OnCallbackException is executed for AsyncConsumers by @BarShavit in #946
- Replace Travis with GitHub Actions by @asbjornu in #952
- Minor improvements to GitHub Actions CI build. by @stebet in #954
- Update IModel Documentation by @JKamsker in #958
- 7.0: update target framework from net461 to netcoreapp3.1 by @bollhals in #971
- Speeding up shortstr/longstr (de)serialization. by @stebet in #985
- Cleaning up and adding more benchmarks. by @stebet in #983
- Speeding up decimal (de)serialization. by @stebet in #984
- some more wire formatting improvements by @bollhals in #989
- 8.0: implement BasicPublishMemory by @bollhals in #990
- 8.0: improve eventing by @bollhals in #986
- minor cleanup of (unused / rarely used) classes by @bollhals in #992
- reduce allocations by @bollhals in #996
- 8.0: implement WaitForConfirmsAsync by @bollhals in #999
- add two test applications by @bollhals in #1003
- Remove Experimental from EventingBasicConsumer doc by @kjnilsson in #1001
- simplify CloseReason handling & improve AutorecoveringConnection eventing by @bollhals in #1002
- Simplify connection recovery by @bollhals in #1004
- Update EventingBasicConsumer.cs by @riddletd in #1006
- Simplify recordings in AutorecoveringConnection by @bollhals in #1007
- Drop deprecated members of framing by @bollhals in #1010
- Reduce close / abort methods in public API by @bollhals in #1008
- #1012 Fixed exception when consumer tag cannot be found in the consumers dictionary by @LamarLugli in #1013
- Fix Semaphore Disposed Exception in AsyncConsumerWorkService by @ashneilson in #1015
- Various cleanups of Connection / Model by @bollhals in #1009
- fix always throwing exception on session close by @bollhals in #1020
- remove socket.poll by @bollhals in #1018
- Framing benchmarks and optimizations by @stebet in #1016
- Code cleanups and performance optimizations. by @stebet in #1017
- Consumer dispatcher improvements by @bollhals in #997
- remove unused classes by @bollhals in #1022
- Replacing nUnit with xUnit and parallelizing tests where possible. by @stebet in #1025
- Workaround: Fixing analyzer build errors on VS2019 v16.9 by @stebet in #1026
- Remove batch publishing as its optimizations are now performed for "regular" publishes/outgoing frames by @bollhals in #1028
- split connection, enable nullable and remove SoftProtocolException by @bollhals in #1029
- Performance counters (metrics) by @bollhals in #1027
- Removing bounds checks when serializing commands/frames. by @stebet in #1030
- Fix typo in ConnectionFactory.cs by @GitHubPang in #1034
- Resolve #1039 Confirms Failure should use ShutdownInitiator.Library by @StevenBonePgh in #1040
- Feature/recover topology if connection problem by @pierresetteskog in #1051
- Structify the Framing.Impl methods by @bollhals in #962
- Fix misspelling and add missing words in comments by @GitHubPang in #1053
- Recover models together with consumers by @bollhals in #1077
- Typos by @sungam3r in #1080
- Fix comments in ConnectionFactory by @GitHubPang in #1084
- Fix incorrect RemotePort by @GitHubPang in #1090
- Fix XML doc for AmqpTcpEndpoint by @GitHubPang in #1091
- Remove unneeded comment by @GitHubPang in #1092
- Fix typo in RUNNING_TESTS.md by @GitHubPang in #1094
- Fix minor typo by @GitHubPang in #1097
- fix a typo in comments of WaitForConfirmsOrDieAsync by @ArminShoeibi in #1095
- Add CodeQL code security analysis workflow by @MirahImage in #1085
- use ref instead of in for generic T + interface by @bollhals in #1098
- Fix typo in comment for IConnection by @GitHubPang in #1099
- Don't record consumers if topology recovery is off by @Pliner in #1082
- improve basic properties read / write by @bollhals in #1100
- simplify code around RabbitMQCtl by @bollhals in #1111
- Clean-up the library's project file. by @teo-tsirpanis in #1124
- introduce struct BasicProperties for basicPublish by @bollhals in #1096
- Merge pull request #1141 from rabbitmq/lukebakken/fix-appveyor by @lukebakken in #1143
- Add Windows GitHub build by @lukebakken in #1149
- Fix flaky connection recovery tests. by @lukebakken in #1148
- Try different docker image by @lukebakken in #1151
- Do not setup dotnet on Win runner by @lukebakken in #1152
- Port PR #1145 to main, manually by @lukebakken in #1161
- Port rabbitmq/rabbitmq-dotnet-client #950 to main by @lukebakken in #1165
- Add TimeOut to Abort call in dispose by @lukebakken in #1164
- Fix Concourse CI by @lukebakken in #1169
- Add test to try and repro #1168 by @lukebakken in #1173
- Reference
RUNNING_TESTS.md
fromCONTRIBUTING.md
by @onematchfox in #1175 AutorecoveringModel.IsClosed
should returntrue
if model is unusable by @onematchfox in #1179- introduce Connection Config class by @bollhals in #1110
- Update AsyncDefaultBasicConsumer.cs by @lukebakken in #1186
- add DeliveryModes convenience enum by @Jalalx in #1063
- Restore readonly by @lukebakken in #1188
- Ensure target frameworks make sense for 7.0 by @lukebakken in #1189
- Reduce message body size to help fix flaky test by @lukebakken in #1193
- Run "dotnet format" by @lukebakken in #1197
- Add related headers to streams feature in Headers.cs by @ArminShoeibi in #1201
- [REVERTED] Use file-scoped namesapces in RabbitMQ.Client project by @ArminShoeibi in #1202
- Fix perpetual auto-recovery problem by @mot256 in #1204
- thread-safe Random generation by @amiru3f in #1207
- Use new Task.WaitAsync() to cancel an await call by @ArminShoeibi in #1206
- Misc updates by @lukebakken in #1215
- Add ability to specify maximum message size by @lukebakken in #1218
- Merge pull request #1224 from rabbitmq/rabbitmq-dotnet-client-1223-6.x by @lukebakken in #1226
- change ref to in and use Unsafe.AsRef by @bollhals in #1247
- Fixing header parsing bug by @stebet in #1260
- Add exception logging on WriteLoop by @Turnerj in #1262
- CI updates by @lukebakken in #1256
- fix: add unsigned short support in table deserialisation by @gytsen in #1270
- Removed an unnecessary comment by @3baaady07 in #1276
- Bump testing versions on Windows by @lukebakken in #1285
- Address some test flakes by @lukebakken in #1288
- Update package versions by @lukebakken in #1295
- Remove unused StringExtension.cs by @Pliner in #1290
- Port #1304 - Add event for recovering consumer by @Zerpet in #1305
- Minimal System.IO.Pipelines integration to prepare for full-async work by @stebet in #1264
- Fix build warning by @lukebakken in #1307
- Part 1 of #1308 - renaming IModel and related names by @lukebakken in #1309
- Part 2 of #1308 - Port Interlocked.cs from #982 by @lukebakken in #1310
- Add custom filtering and exception handling to topology recovery by @rosca-sabina in #1312
- Ignore global.json by @michaelklishin in #1319
- Port #1317 to main by @lukebakken in #1323
- Fix consumer recovery with server-named queues by @lukebakken in #1325
- Updates from the 6.x branch by @lukebakken in #1328
- Add a missing constant for NO_ROUTE by @michaelklishin in #1332
- Misc updates by @lukebakken in #1326
- Follow-up to PR #1332 by @lukebakken in #1340
- Adding fully asynchronous versions of connect and publish. by @stebet in #1311
- Build using traversal project by @lukebakken in #1344
- Implement QueueDeclareAsync by @lukebakken in #1345
- Misc Windows CI updates by @lukebakken in #1366
- Update package references by @lukebakken in #1372
- fix typo by @WeihanLi in #1377
- Fix #1378 by @MarcialRosales in #1380
- Support OAuth2 authentication by @MarcialRosales in #1346
- Ensure that the order of arguments is
expected
,actual
by @lukebakken in #1385 - Ensure that the order of arguments is
expected
,actual
, take two! by @lukebakken in #1386 - Use latest CI resources on Windows by @lukebakken in #1394
- Remove use of Moq by @lukebakken in #1393
- Add workflow to test OAuth2 by @lukebakken in #1397
- Add certs and rabbitmq.conf to enable TLS testing on GHA by @lukebakken in #1398
- Ensure tests that interact with RabbitMQ do not run in parallel by @lukebakken in #1402
- Update package dependencies by @lukebakken in #1403
- Update API documentation of MaxMessageSize by @MarcialRosales in #1381
- Update GHA for NuGet publishing by @lukebakken in #1406
- Clarify Unix Time units in AmqpTimestamp by @ngbrown in #1407
- Removed ReceiveBufferSize and SendBufferSize to improve message rates by @lukebakken in #1415
- Make TcpClientAdapter public by @lukebakken in #1417
- Implement asynchronous methods. by @lukebakken in #1347
- Ensure that the underlying timer for
Task.Delay
is canceled. by @lukebakken in #1426 - Fix #1429 by @lukebakken in #1431
- Port #1434 to
main
by @lukebakken in #1442 - Add cancellation to initial socket connection by @lukebakken in #1428
- Use
Microsoft.CodeAnalysis.PublicApiAnalyzers
by @lukebakken in #1447 - Retry more connections in test suite by @lukebakken in #1449
- Add test that demonstrates the current behavior of a recovered channe… by @lukebakken in #1450
- Enable long running tests by @lukebakken in #1451
- Ensure delivery tag is decremented for client-side exception by @lukebakken in #1453
- Trimming and AOT compatibility by @eerhardt in #1411
- Add test to prove bindings are restored by topology recovery by @lukebakken in #1460
- Remove synchronous API by @lukebakken in #1473
- Add OpenTelemetry support via ActivitySource by @stebet in #1261
- Add more use of CancellationToken in Async methods. by @lukebakken in #1468
- Re-organize test projects by @lukebakken in #1491
- InternalsVisibleTo enhancements by @WeihanLi in #1488
- Port #1494 to
main
by @lukebakken in #1495 - Update codeql.yml by @lukebakken in #1499
- Address lack of Socket read timeout for async reads by @lukebakken in #1497
- Remove more synchronous code. by @lukebakken in #1501
- Add test code for issue #1464 by @lukebakken in #1466
- Remove more synchronous code by @lukebakken in #1504
- Use RabbitMQ 3.13 on Windows GHA by @lukebakken in #1505
- Continue removing sync API by @lukebakken in #1506
- Continue simplifying code by @lukebakken in #1507
- Make handling of server-originated methods async by @lukebakken in #1508
- Remove
ClientArrayPool
by @lukebakken in #1515 - Remove TODO by @lukebakken in #1516
- #1480 Use conditional packages for v7 release by @thompson-tomo in #1481
- Fix small typos in ConnectionFactory by @markbosch in #1521
- Remove a lot of unused code by @lukebakken in #1517
- Add build step to check for
inet_error
by @lukebakken in #1525 - Add a test that closes a connection with Toxiproxy by @lukebakken in #1522
- Add
CancellationToken
toAsync
members ofIChannel
by @lukebakken in #1535 - Fix the flaky
TestConsumerRecoveryOnClientNamedQueueWithOneRecovery
test by @lukebakken in #1538 - Replace
lock
withSemaphoreSlim
by @lukebakken in #1539 - Separate out connection recovery tests by @lukebakken in #1549
TestPublishRpcRightAfterReconnect
improvements by @lukebakken in #1553- Better exception message when a continuation times out by @lukebakken in #1552
- Fix
TestThatDeletedQueueBindingsDontReappearOnRecovery
by @lukebakken in #1554 - More
CancellationToken
todos by @lukebakken in #1555 - Enable
rabbitmq-client
event logging when tests are verbose by @lukebakken in #1559 - Misc changes by @lukebakken in #1560
- Various editor suggestions by @lukebakken in #1563
- Enforce max message size with mutiple content frames by @lukebakken in #1566
- Fix ShutdownInitiator in
CloseAsync
by @lukebakken in #1574 - Misc changes from lukebakken/amqp-string by @lukebakken in #1575
- Truncate long client provided names by @lukebakken in #1576
- Add test that creates
IChannel
within async consumer callback by @lukebakken in #1578 - Remove two unnecessary
.Cast<>()
usages by @lukebakken in #1577 - Use ConcurrentDictionary by @lukebakken in #1580
- Fix two flaky tests by @lukebakken in #1579
- Handle AppDomain unload by @lukebakken in #1583
- Demonstrate that #1038 is fixed by @lukebakken in #1585
- Can't close channel from consumer dispatcher by @lukebakken in #1568
- Add test demonstrating that #1573 is fixed by @lukebakken in #1587
- Change test to match code provided by @neilgreatorex by @lukebakken in #1588
- Update copyright message by @lukebakken in #1589
- Adding proper OpenTelemetry integration via. registration helpers and better context propagation by @stebet in #1528
- Add test to demonstrate that #825 is fixed by @lukebakken in #1590
- Ensure OpenTelemetry project is set up like OAuth2 by @lukebakken in #1592
- Ship PublicAPI by @lukebakken in #1593
- Use default value for
RabbitMQActivitySource.UseRoutingKeyAsOperationName
by @lukebakken in #1595 - downgrade dependencies by @WeihanLi in #1594
- Update CHANGELOG by @lukebakken in #1598
- Remove in from async methods by @Tornhoof in #1602
- nuget CPM support by @WeihanLi in #1599
- fix some quick wins by @bollhals in #1603
- docs: update badge by @WeihanLi in #1608
- remove CancellationTokenSource from DispatcherChannelBase by @bollhals in #1606
- Make
ReadonlyBasicProperties
a class. by @lukebakken in #1607 - Make
BasicProperties
a class by @lukebakken in #1609 - change InboundFrame to a class by @bollhals in #1613
- Add
DispatchConsumersAsyncEnabled
property onIConnection
(#1611) by @lukebakken in #1615 - Ensure that arguments passed to recorded entities are copied. by @lukebakken in #1616
- Avoid boxing in IEndpointResolverExtensions.cs by @lechu445 in #1619
- Fix issue when recovery takes longer than recovery interval by @lukebakken in #1624
- make IncomingCommand a class and simplify code around it by @bollhals in #1628
- Replace ReadOnlyBasicProperties with IReadOnlyBasicProperties by @Tornhoof in #1631
- Add NRT for the whole client assembly by @bollhals in #1626
- Move
Deliver
OTEL activity to consumer dispatchers by @lukebakken in #1633 - simplify IncomingCommand.ReturnBuffers handling by @bollhals in #1636
- use async consumer only by @bollhals in #1638
- Add cancellation token overload to channel extensions by @danielmarbach in #1641
- Support cancellation on the flow control block by @danielmarbach in #1643
- Align Reject with Ack/Nack by @danielmarbach in #1642
- Fix object disposed exception during channel Recovery by @lukebakken in #1648
- Refactor credential refresh by @lukebakken in #1649
- Consistently use
Task
orValueTask
in APIs by @lukebakken in #1646 - Added ability to use Issuer to receive Token Endpoint for the OAuth2ClientBuilder by @Lyphion in #1656
- Finish up version 7 release by @lukebakken in #1661
- Fix
NextPublishSeqNo
when retrieved concurrently by @lukebakken in #1662 - Clean up
IChannelExtensions
by @lukebakken in #1664 - Add test to demonstrate
IChannel
thread-safety by @lukebakken in #1665 - Require
IChannel
forAsyncDefaultBasicConsumer
by @lukebakken in #1667 - Minor cleanup in AutoRecovery classes by @danielmarbach in #1670
- Allow the dispatcher concurrency to be overriden per channel by @danielmarbach in #1669
- Follow-up to #1669 - per-channel dispatch concurrency by @lukebakken in #1671
- Try to address some test flakes by @lukebakken in #1672
- Sequence Number non-blocking by @danielmarbach in #1675
- Make connection events async by @danielmarbach in #1677
- Use unique queue and exchange names by @lukebakken in #1678
- Make session events async by @danielmarbach in #1679
- Make channel events async by @danielmarbach in #1680
- Async flow control by @danielmarbach in #1681
- Event args cancellation by @danielmarbach in #1683
- Move code to appropriate directories that match namespace structure by @lukebakken in #1685
- AsyncDisposable by @danielmarbach in #1684
- Fix exception when refreshing oauth2 token by @BreakingBread0 in #1690
- Track publisher confirmations automatically by @lukebakken in #1687
- Integrate
Channel
intoChannelBase
by @lukebakken in #1700 - Isolate publisher confirmation code by @lukebakken in #1702
- Enforce maximum outstanding publisher confirms, if set by @lukebakken in #1703
- Upgrade NET6.0 to NET8.0 since NET6.0 is soon EOL by @danielmarbach in #1707
- Leverage
System.Threading.RateLimiting
by @lukebakken in #1706 - Address some more TODOs by @lukebakken in #1708
- Safeguarding against duplicate sequence numbers by @danielmarbach in #1709
- Xml doc updates for the rate limiting by @danielmarbach in #1711
- Only add
x-dotnet-pub-seq-no
when tracking enabled by @lukebakken in #1710 - Remove
ChannelOptions
internal class by @lukebakken in #1712 - Throw when lease not acquired. This can happen then the rate limiter doesn't allow queuing or is generally wrongly configured by @danielmarbach in #1714
- Change OTel attribute messaging.operation to messaging.operation.type by @iinuwa in #1716
- Fix build warnings in API by @lukebakken in #1718
- 7.0.0 CHANGELOG by @lukebakken in #1719
New Contributors
- @AndrzejKrol made their first contribution in #823
- @ig-sinicyn made their first contribution in #828
- @BenBorn made their first contribution in #880
- @pergh made their first contribution in #884
- @JeremyMahieu made their first contribution in #896
- @tmasternak made their first contribution in #908
- @dcorbacho made their first contribution in #916
- @paulomf made their first contribution in #935
- @BarShavit made their first contribution in #946
- @asbjornu made their first contribution in #952
- @JKamsker made their first contribution in #958
- @riddletd made their first contribution in #1006
- @LamarLugli made their first contribution in #1013
- @GitHubPang made their first contribution in #1034
- @StevenBonePgh made their first contribution in #1040
- @sungam3r made their first contribution in #1080
- @ArminShoeibi made their first contribution in #1095
- @MirahImage made their first contribution in #1085
- @teo-tsirpanis made their first contribution in #1124
- @Jalalx made their first contribution in #1063
- @amiru3f made their first contribution in #1207
- @Turnerj made their first contribution in #1262
- @3baaady07 made their first contribution in #1276
- @WeihanLi made their first contribution in #1377
- @MarcialRosales made their first contribution in #1380
- @markbosch made their first contribution in #1521
- @Tornhoof made their first contribution in #1602
- @lechu445 made their first contribution in #1619
- @Lyphion made their first contribution in #1656
- @BreakingBread0 made their first contribution in #1690
- @iinuwa made their first contribution in #1716
Full Changelog: v6.0.0...v7.0.0