Releases: dotnetcore/CAP
Releases · dotnetcore/CAP
8.4.0
🚀 Improvements
- Added
SchedulerBatchSize
option to specify the maximum number of delayed or queued messages fetched per scheduler loop. (#1689) Thanks @yang-xiaodong - Dashboard UI now supports deleting single or multiple messages. (#1674) Thanks @ustaserdar
- Updated MongoDB indexes to include a compound index on
StatusName
andExpiresAt
. (#1702) Thanks @demorgi - Standardized broker naming and improved telemetry. (#1717) Thanks @Savorboard
- Improved reliability of MongoDB lock acquisition by reducing rollback errors. (#1722) Thanks @demorgi
🐞 Bug Fixes
- Fixed a hang in Blazor applications when awaiting a commit transaction. (#1697)
- Prevented unsafe reuse of RabbitMQ message body under high concurrency by copying it into a dedicated buffer before background processing. (#1727) Thanks @otemnov
Full Changelog: v8.3.5...v8.4.0
8.3.5
Improvements
- When
MessageTimeout
andRequestTimeout
are configured in Kafka’sMainConfig
, CAP will no longer override them. (#1686)
Bug Fixes
- Fixed a syntax error in MySQL when deleting expired data, and improved the deletion statement. (#1673)
- Fixed an issue where a database exception during delayed message sending would cause the thread to exit. (#1691)
New Contributors
- @davidklempfner1 made their first contribution in #1683
- @EsonXie made their first contribution in #1686
Full Changelog: v8.3.4...v8.3.5
8.3.4
Improvements
- Thanks to @findersky for developing the Storage Provider for Dameng Database as a community contribution.
- Adjusted the timing of verifying whether CAP is started. When CAP is stopped, failed messages will be persisted to storage and retried automatically once CAP is restarted. (#1238)
Bug Fixes
- Changed RabbitMQ queue binding from asynchronous calls to synchronous blocking calls. (#1670)
- Fixed a potential deadlock issue when updating message statuses and deleting expired messages. Thanks to @haoyk (#1672)
New Contributors
- @maxwell60701 made their first contribution in #1641
- @findersky made their first contribution in #1664
- @diyst made their first contribution in #1669
- @haoyk made their first contribution in #1672
Full Changelog: v8.3.3...v8.3.4
8.3.3
Improvements
- Introduced a
FlushAsync
function, which is now called withinCommitAsync
using theawait
keyword (#1629). Thanks to @PoteRii. - Reworked the message scheduling mechanism to be thread-safe, along with adding relevant tests (#1638). Thanks to @amimelia.
- Eliminated the inclusion of password configuration information in RabbitMQ debug logs (#1647).
- Upgraded to support RabbitMQ.Client version 7.0 (#1645).
- Updated the MongoDB driver to version 3.1.0 (#1609). Thanks to @li-zheng-hao.
Bug Fixes
8.3.2
Improvements
- Graceful Handling of CAP Message Headers: The CAP message group header will now be overwritten instead of throwing an exception if it already exists. (#1623) Thanks to @PoteRii.
- Custom Exception Handling for Redis Streams: Introduced support for invoking user-defined actions when exceptions occur during the consumption of Redis streams. (#1618) Thanks to @MahmoudSamir101.
Bug Fixes
- Azure Service Bus AutoCompleteMessages Lock Issue: Resolved an issue where the
AutoCompleteMessages
feature in Azure Service Bus caused an invalid lock error. (#1598)
8.3.1
8.3.0
Features
- Upgraded all dependent NuGet packages to the latest versions.
- Added a NATS option to disable dynamic subject creation for consumers (#1556). Thanks @davidterins.
- Consumers now support the
IAsyncDisposable
interface (#1582). - Added
QueueOptions
for RabbitMQ transport (#1585). Thanks @apatozi. - Added the
ShowOnlyExplicitVisibleNodes
option to the dashboard for supporting Kubernetes node discovery with filtering (#1577). Thanks @apatozi. - Refactored to use file-scoped namespaces (#1586). Thanks @samanazadi1996.
- Added more default retryable error codes for Kafka consumption exceptions (#1587).
Bug Fixes
- Fixed an issue that could cause multiple retries when both
UseStorageLock
andEnableParallelExecute
are enabled (#1560). Thanks @sampsonye. - Fixed a bug related to the
BrokerAddress
property in the Azure Service Bus transport (#1576). Thanks @mviegas. - Fixed a bug where
AbandonMessageAsync
was not called on Azure Service Bus messages when persistence fails, preventing potential message loss (#1584). Thanks @oussama-smida. - Fixed
DateTime
parsing usingInvariantCulture
(#1590). Thanks @NikolozGob.
8.2.0
Features
- Add support
CustomHeadersBuilder
option for NATS. (#1519) - Add
GroupConcurrent
option for [CapSubscribe] to support subscriber concurrent execution. (#1537) - Add option for controlling reponse from CapHeader. (#1541)
- Improvements to the "EnablePublishParallelSend" option to "true" will put tasks into the .NET thread pool in batches. (#1540)
Bug Fixed
- Fixed issue where CapTransaction was not disposed when the transaction failed for Sql Server. (#1521)
- Fixed NATS reconnection publish issue after restarting server. (#1542)
What's Changed
- Upgrade dashboard npm package to vue2 latest minor version.
- Upgrade Ngpsql to 8.0.3 to fix "Npgsql vulnerable to SQL Injection via Protocol Message Size Overflow".
- Simplify code using deconstruction. by @xiangxiren in #1533
Full Changelog: v8.1.2...v8.2.0
8.1.2
Bug Fixed
- Fixed publish exception when event outside of transaction finishing scope. (#1521) Thanks @NikolozGob
- Fixed PublishDelay synchronization method did not wait internally.