Release 0.40.24 Spring Boot 3.3.*
Pre-releaseWhat's Changed
- Queue improvements - release 0.40.24 by @cloudcreate-dk in #118
Full Changelog: 0.40.23...0.40.24
Release Notes Summary
🚨 Important Defaults and Potential Breaking Changes
- Upgraded to Spring Boot 3.3.* - the last version compatible with Spring Boot 3.2 is version 0.40.23
- Centralized Message Fetcher for PostgreSQL durable queues is enabled by default in Spring-Boot starters. Adjust or disable explicitly if not required.
- EventProcessor now extends
AbstractEventProcessor. Please report any backwards compatibility issues!
🚀 New Features
PostgreSQL Durable Queues
-
Centralized Message Fetcher: Introduced a single-threaded polling mechanism (
CentralizedMessageFetcher) to reduce DB load by distributing tasks to worker threads.- Configurable via
essentials.durable-queues.use-centralized-message-fetcher(default: enabled) andessentials.durable-queues.centralized-message-fetcher-polling-interval(default: 20 ms). - New integration tests:
CentralizedFetcherDurableQueueIT.
- Configurable via
-
New method:
hasOrderedMessageQueuedForKeyfor message inspection.
Event Processing and Subscription
-
ViewEventProcessor (Experimental):
- Direct processing of
PersistedEvents; fallback to durable queues on processing errors.ViewEventProcessoris an abstraction for processing events that are projected into views (e.g. in a relational database).- It integrates with a distributed locking mechanism to ensure exclusive access during processing.
PersistedEvent's are processed directly and only in case of an error handling the event will this event (and later events associated with the same aggregate id) be queued onto the underlying durable queue associated with this processor.
- Direct processing of
-
Enhanced subscription management via asynchronous methods:
subscribeToAggregateEventsAsynchronouslyand improved reset handling.- Batch subscription (
batchSubscribeToAggregateEventsAsynchronously) introduced for increased throughput with retries and improved error handling:BatchedPersistedEventHandlersupports receiving multiple Events in a batch.
🛠️ Refactoring & Improvements
- Improved integration tests for PostgreSQL durable queues:
- Standardized visibility and abstracted common test logic.
- Refined implementations of
equals,hashCodeinMessageMetaData, and improved documentation across multiple classes. - Handling
SQLTransientExceptionnow supported inIOExceptionUtil. - Graceful handling (
Flux.empty()) when listener closure fails inListenNotify.
📚 Documentation
- Documented new properties for centralized message fetching in READMEs.
📦 Dependency Updates
-
Kotlin:
2.0.21→2.1.20 -
Spring Boot:
3.2.12→3.3.11 -
Spring Framework BOM:
6.1.18→6.1.19 -
Reactor BOM:
2023.0.16→2023.0.17 -
Spring Data MongoDB:
4.2.12→4.3.11 -
Spring Data JPA:
3.2.12→3.3.11 -
MongoDB Driver Sync:
4.11.5→5.0.1 -
SnakeYAML:
2.3→2.4 -
Micrometer:
1.12.13→1.13.13 -
Micrometer Tracing:
1.2.12→1.3.11 -
Netty BOM:
4.1.119.Final→4.2.0.Final -
JUnit BOM:
5.12.1→5.12.2 -
Testcontainers BOM:
1.20.6→1.21.0 -
JDBI3 BOM:
3.49.0→3.49.3 -
Jackson BOM:
2.18.3→2.19.0 -
Mockito BOM:
5.16.1→5.17.0 -
Removed unnecessary Tomcat dependencies.