Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Release 0.40.24 Spring Boot 3.3.*

Pre-release
Pre-release

Choose a tag to compare

@cloudcreate-dk cloudcreate-dk released this 05 May 21:42
· 1 commit to main since this release
e2a2c11

What's Changed

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) and essentials.durable-queues.centralized-message-fetcher-polling-interval (default: 20 ms).
    • New integration tests: CentralizedFetcherDurableQueueIT.
  • New method: hasOrderedMessageQueuedForKey for message inspection.

Event Processing and Subscription

  • ViewEventProcessor (Experimental):

    • Direct processing of PersistedEvents; fallback to durable queues on processing errors.
      • ViewEventProcessor is 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.
  • Enhanced subscription management via asynchronous methods:

    • subscribeToAggregateEventsAsynchronously and improved reset handling.
    • Batch subscription (batchSubscribeToAggregateEventsAsynchronously) introduced for increased throughput with retries and improved error handling:
      • BatchedPersistedEventHandler supports 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, hashCode in MessageMetaData, and improved documentation across multiple classes.
  • Handling SQLTransientException now supported in IOExceptionUtil.
  • Graceful handling (Flux.empty()) when listener closure fails in ListenNotify.

📚 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.