diff --git a/framework-platform/framework-platform.gradle b/framework-platform/framework-platform.gradle index 72fce80ce4c..99dbf6b0366 100644 --- a/framework-platform/framework-platform.gradle +++ b/framework-platform/framework-platform.gradle @@ -9,17 +9,17 @@ javaPlatform { dependencies { api(platform("com.fasterxml.jackson:jackson-bom:2.15.2")) api(platform("io.micrometer:micrometer-bom:1.12.0-M2")) - api(platform("io.netty:netty-bom:4.1.96.Final")) + api(platform("io.netty:netty-bom:4.1.97.Final")) api(platform("io.netty:netty5-bom:5.0.0.Alpha5")) api(platform("io.projectreactor:reactor-bom:2023.0.0-M2")) api(platform("io.rsocket:rsocket-bom:1.1.3")) - api(platform("org.apache.groovy:groovy-bom:4.0.13")) + api(platform("org.apache.groovy:groovy-bom:4.0.14")) api(platform("org.apache.logging.log4j:log4j-bom:2.20.0")) - api(platform("org.eclipse.jetty:jetty-bom:11.0.15")) + api(platform("org.eclipse.jetty:jetty-bom:11.0.16")) api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.3")) api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.0")) api(platform("org.junit:junit-bom:5.10.0")) - api(platform("org.mockito:mockito-bom:5.4.0")) + api(platform("org.mockito:mockito-bom:5.5.0")) constraints { api("com.fasterxml:aalto-xml:1.3.2") @@ -54,9 +54,9 @@ dependencies { api("io.r2dbc:r2dbc-spi:1.0.0.RELEASE") api("io.reactivex.rxjava3:rxjava:3.1.6") api("io.smallrye.reactive:mutiny:1.9.0") - api("io.undertow:undertow-core:2.3.7.Final") - api("io.undertow:undertow-servlet:2.3.7.Final") - api("io.undertow:undertow-websockets-jsr:2.3.7.Final") + api("io.undertow:undertow-core:2.3.8.Final") + api("io.undertow:undertow-servlet:2.3.8.Final") + api("io.undertow:undertow-websockets-jsr:2.3.8.Final") api("io.vavr:vavr:0.10.4") api("jakarta.activation:jakarta.activation-api:2.0.1") api("jakarta.annotation:jakarta.annotation-api:2.0.0") @@ -102,10 +102,10 @@ dependencies { api("org.apache.httpcomponents.client5:httpclient5:5.2.1") api("org.apache.httpcomponents.core5:httpcore5-reactive:5.2.2") api("org.apache.poi:poi-ooxml:5.2.3") - api("org.apache.tomcat.embed:tomcat-embed-core:10.1.12") - api("org.apache.tomcat.embed:tomcat-embed-websocket:10.1.12") - api("org.apache.tomcat:tomcat-util:10.1.12") - api("org.apache.tomcat:tomcat-websocket:10.1.12") + api("org.apache.tomcat.embed:tomcat-embed-core:10.1.13") + api("org.apache.tomcat.embed:tomcat-embed-websocket:10.1.13") + api("org.apache.tomcat:tomcat-util:10.1.13") + api("org.apache.tomcat:tomcat-websocket:10.1.13") api("org.aspectj:aspectjrt:1.9.20") api("org.aspectj:aspectjtools:1.9.20") api("org.aspectj:aspectjweaver:1.9.20") diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java b/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java index 01d29c2449e..31de9c0f58d 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java @@ -98,12 +98,14 @@ import org.springframework.util.backoff.FixedBackOff; * number of 1 consumer, otherwise you'd receive the same message multiple times on * the same node. * - *

Note: Don't use Spring's {@link org.springframework.jms.connection.CachingConnectionFactory} - * in combination with dynamic scaling. Ideally, don't use it with a message - * listener container at all, since it is generally preferable to let the - * listener container itself handle appropriate caching within its lifecycle. - * Also, stopping and restarting a listener container will only work with an - * independent, locally cached Connection - not with an externally cached one. + *

Note: You may use {@link org.springframework.jms.connection.CachingConnectionFactory} + * with a listener container but it comes with limitations. It is generally preferable + * to let the listener container itself handle appropriate caching within its lifecycle. + * Also, stopping and restarting a listener container will only work with an independent, + * locally cached {@code Connection}, not with an externally cached one. Last but not least, + * with {@code CachingConnectionFactory}, dynamic scaling with custom provider hints such as + * {@link #setMaxMessagesPerTask "maxMessagesPerTask"} can result in JMS messages delivered + * to cached consumers even when they are no longer attached to the listener container. * *

It is strongly recommended to either set {@link #setSessionTransacted * "sessionTransacted"} to "true" or specify an external {@link #setTransactionManager