-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Spring Integration 6.1 to 6.2 Migration Guide
- Remove unused
ThreadLocal
fromRedisStoreMessageSource
- Mail module is upgraded to
org.eclipse.angus:jakarta.mail-2.0.2
- Deprecation of the `AbstractChannelMessageStoreQueryProvider
- Key-Value Stores: Rename Message Group Prefix
- Default Poller Trigger as 1 second
SKIP LOCKED
and MySQL
The ThreadLocal<RedisStore> resourceHolder
variable in the RedisStoreMessageSource
is out of use for a while in favor of IntegrationResourceHolder
and its store
attribute.
Public methods getResource()
, afterCommit(Object object)
, and afterRollback(Object object)
were removed altogether since they haven't done any logic since functionality was migrated to IntegrationResourceHolder
.
See Redis Store Inbound Channel Adapter documentation for more information.
The IMAP functionality in Spring Integration has moved to the latest Java Mail implementation with Eclipse Angus.
So, the com.sun.mail.imap
package has been replaced with org.eclipse.angus.mail.imap
.
Methods from the AbstractChannelMessageStoreQueryProvider
have been moved to the super ChannelMessageStoreQueryProvider
interface as default
.
Since there is no more functionality in the AbstractChannelMessageStoreQueryProvider
class, it was deprecated (for removal) and its usage in the implementations was replaced with just the super ChannelMessageStoreQueryProvider
interface.
Therefore there might be some breaking change where this AbstractChannelMessageStoreQueryProvider
is used directly in the target projects.
Consider to migrate to the mentioned super ChannelMessageStoreQueryProvider
interface.
The prefix for message group entries in key/value stores was MESSAGE_GROUP_
, which really starts with the prefix for message entries - MESSAGE_
.
Therefore queries based on MESSAGE_*
(MESSAGE_%
) patterns returns message group entries as well.
In this version the prefix for group entries has been changed to GROUP_OF_MESSAGES_
, so pattern queries wouldn't conflict.
The default Trigger
for pollers (empty <int:poller/>
, @Poller
or new PollerMetadata()
) is now a 1-second fixed delay period.
This value is more reasonable than previous 10 milliseconds and reflects Spring Boot default behavior.
Same 1-second period is also used by default in Spring Cloud Stream for polling endpoints.
Some ChannelMessageStoreQueryProvider
implementations are now adding a SKIP LOCKED
hint for polling queries.
The MySQL database might be configured for the transaction-isolation = REPEATABLE-READ
.
To avoid Lock wait timeout exceeded; try restarting transaction
this property for MySQL has to be set to READ-COMMITTED
.
Or this can be configured from the Spring Integration poller perspective:
e.poller(poller ->
poller.fixedDelay(1000)
.transactional(
new TransactionInterceptorBuilder()
.isolation(Isolation.READ_COMMITTED)
.build())))