This repository was archived by the owner on Jul 4, 2025. It is now read-only.
Repository navigation
Release 0.40.19 Spring Boot 3.2.*
Pre-release
Pre-release
What's Changed
- Ability to add multiple inbox messages in one go by @AndersHelmar in #102
- Release 0.40.19 by @cloudcreate-dk in #103
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
Inboxat once - Refined Javadoc for
Inbox/OutboxandInboxes/Outboxes - Added ability to add multiple messages to an
Outboxat once (AddedsendMessageListandsendMessagestoOutbox) - Added integration test using a combination of
InTransactionEventProcessorandStatefulAggregateRepositoryto verify that theStatefulAggregateRepositoryUnitOfWorkLifecycleCallback'sbeforeCommitlogic, in combination withGenericHandleAwareUnitOfWorkFactory'sbeforeCommitlogic, allows synchronousEventBusEventHandler's to participate in persisting additional event(s) as part of the sameUnitOfWork - Added a default
fencedLocksTableNamevalue toPostgresqlFencedLockManagerBuilder - Added an
elapsedmethod toStopWatch - Added
filterDuplicateNotificationsto theMultiTableChangeListenerPropertiesin thespring-boot-starter-postgresqlautoconfiguration properties (adjustedREADME.mdto reflect this)
- This is related to the newNotificationDuplicationFilterconcept supported by theMultiTableChangeListener - Added
commandBusParallelSendAndDontWaitConsumersto theReactivePropertiesin thespring-boot-starter-postgresqlandspring-boot-starter-mongodbautoconfiguration properties (adjustedREADME.mdto reflect this)- Renamed
parallelThreadstoeventBusParallelThreadsin theReactiveProperties(adjustedREADME.mdto reflect this)
- Renamed
- Refined the javadoc and clarified
UnitOfWorkhandling forEventStoreEventBus,EventProcessor,InTransactionEventProcessor,EventStoreSubscriptionManager - Refined the
UnitOfWorkLifecycleCallback.BeforeCommitProcessingStatusprocessing status logic inGenericHandleAwareUnitOfWorkFactoryandSpringTransactionAwareUnitOfWorkFactoryso it supports having multiple unitOfWorkLifecycleCallbackResources - Improved
SimpleQueuePollingOptimizerpolling skip logic by switching fromThreadLocaltoAtomicLongsince multiple threads can be involved. - Improved
DefaultDurableQueueConsumer
- AddeduncaughtExceptionHandlerto the polling scheduler
- Added more TRACE logging topollQueue
- ChangedprocessNextMessageReadyForDeliverylogic - Changed default
parallelSendAndDontWaitConsumersvalue forDurableLocalCommandBusfrom 10 to the number of available processors - Introduced
NotificationFilterChain+NotificationDuplicationFiltertoMultiTableChangeListenerwhich can reduce notification load for nearly identical notifications, where the difference isn't important to the listener.
- If two or moreNotification's in a given poll batch share the same duplication key, then only one of them will be published to the listeners registered with theMultiTableChangeListener
- Example: if 100 messages are queued for the sameQueueNamein the sameUnitOfWork, then theMultiTableChangeListenerwill notify
thePostgresqlDurableQueueswith 100TableChangeNotification's. Using theQueueNameDuplicationFilter, thePostgresqlDurableQueues
will only receive a singleTableChangeNotificationfor that specificQueueName. Filtering is only performed on Notifications
returned in a single database notification poll - Added
QueueNameDuplicationFiltertoPostgresqlDurableQueuessetup to reduce notification load when multiple messages are queued for the sameQueueNamewithin a short amount of time (e.g. within a singleUnitOfWork) - Optimized
PostgresqlDurableQueuesindexes to reduce index update time when inserting a lot of messages in a short amount of time - Added
DurableQueuesLoadITto 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.getNextMessageReadyForDeliveryand switched to using multiline string - Improved
StatefulAggregateRepositorylogging - Added
isActivetoEventProcessorandInTransactionEventProcessor - Added more
UnitOfWork.infologging
-ExclusiveInTransactionSubscription#isActivenow returnsactiveinstead ofstarted
- Refined javadoc forEssentialsComponentsProperties