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

Release 0.40.19 Spring Boot 3.2.*

Pre-release
Pre-release

Choose a tag to compare

@cloudcreate-dk cloudcreate-dk released this 04 Dec 07:56
· 104 commits to main since this release
23a424c

What's Changed

Full Changelog: 0.40.18...0.40.19

There are many changes in this release, please test thoroughly and provide feedback if you experience any issues.

  • Updated queue gauge value on message handled
  • Added ability to add multiple messages to an Inbox at once
  • Refined Javadoc for Inbox/Outbox and Inboxes/Outboxes
  • Added ability to add multiple messages to an Outbox at once (Added sendMessageList and sendMessages to Outbox)
  • Added integration test using a combination of InTransactionEventProcessor and StatefulAggregateRepository to verify that the StatefulAggregateRepositoryUnitOfWorkLifecycleCallback's beforeCommit logic, in combination with GenericHandleAwareUnitOfWorkFactory's beforeCommit logic, allows synchronous EventBus EventHandler's to participate in persisting additional event(s) as part of the same UnitOfWork
  • Added a default fencedLocksTableName value to PostgresqlFencedLockManagerBuilder
  • Added an elapsed method to StopWatch
  • Added filterDuplicateNotifications to the MultiTableChangeListenerProperties in the spring-boot-starter-postgresql autoconfiguration properties  (adjusted README.md to reflect this)
      - This is related to the new NotificationDuplicationFilter concept supported by the MultiTableChangeListener
  • Added commandBusParallelSendAndDontWaitConsumers to the ReactiveProperties in the spring-boot-starter-postgresql and spring-boot-starter-mongodb autoconfiguration properties (adjusted README.md to reflect this)
    • Renamed parallelThreads to eventBusParallelThreads in the ReactiveProperties  (adjusted README.md to reflect this)
  • Refined the javadoc and clarified UnitOfWork handling for EventStoreEventBus, EventProcessor, InTransactionEventProcessor, EventStoreSubscriptionManager
  • Refined the UnitOfWorkLifecycleCallback.BeforeCommitProcessingStatus processing status logic in GenericHandleAwareUnitOfWorkFactory and SpringTransactionAwareUnitOfWorkFactory so it supports having multiple unitOfWorkLifecycleCallbackResources
  • Improved SimpleQueuePollingOptimizer polling skip logic by switching from ThreadLocal to AtomicLong since multiple threads can be involved.
  • Improved DefaultDurableQueueConsumer
      - Added uncaughtExceptionHandler to the polling scheduler
      - Added more TRACE logging to pollQueue
      - Changed processNextMessageReadyForDelivery logic
  • Changed default parallelSendAndDontWaitConsumers value for DurableLocalCommandBus from 10 to the number of available processors
  • Introduced NotificationFilterChain + NotificationDuplicationFilter to MultiTableChangeListener which can reduce notification load for nearly identical notifications, where the difference isn't important to the listener.
      - If two or more Notification's in a given poll batch share the same duplication key, then only one of them will be published to the listeners registered with the MultiTableChangeListener
      - Example: if 100 messages are queued for the same QueueName in the same UnitOfWork, then the MultiTableChangeListener will notify
        the PostgresqlDurableQueues with 100 TableChangeNotification's. Using the QueueNameDuplicationFilter, the PostgresqlDurableQueues
        will only receive a single TableChangeNotification for that specific QueueName. Filtering is only performed on Notifications
        returned in a single database notification poll
  • Added QueueNameDuplicationFilter to PostgresqlDurableQueues setup to reduce notification load when multiple messages are queued for the same QueueName within a short amount of time (e.g. within a single UnitOfWork)
  • Optimized PostgresqlDurableQueues indexes to reduce index update time when inserting a lot of messages in a short amount of time
  • Added DurableQueuesLoadIT to test adding a lot of message within a single UnitOfWork doesn't delay message consumption due to slow index updates
  • Added more logging to PostgresqlDurableQueues.getNextMessageReadyForDelivery and switched to using multiline string
  • Improved StatefulAggregateRepository logging
  • Added isActive to EventProcessor and InTransactionEventProcessor
  • Added more UnitOfWork.info logging
    - ExclusiveInTransactionSubscription#isActive now returns active instead of started
    - Refined javadoc for EssentialsComponentsProperties