Skip to content

Commit 456d6e7

Browse files
aartiguptaambhave
authored andcommitted
Add support for customizing RSocketMessageHandler
See gh-21081
1 parent 0cb0907 commit 456d6e7

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.springframework.boot.autoconfigure.rsocket;
2+
3+
import org.apache.catalina.connector.Connector;
4+
import org.springframework.boot.web.embedded.tomcat.ConfigurableTomcatWebServerFactory;
5+
import org.springframework.messaging.rsocket.RSocketStrategies;
6+
import org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler;
7+
import org.springframework.util.RouteMatcher;
8+
9+
/**
10+
* @author Aarti Gupta
11+
* Callback interface that can be used to customize a RSocketMessageHandler {@link Connector}.
12+
*/
13+
@FunctionalInterface
14+
public interface RSocketMessageHandlerCustomizer {
15+
16+
RSocketMessageHandler setRouteMatcher(RouteMatcher handler);
17+
18+
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketMessagingAutoConfiguration.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
import io.rsocket.RSocketFactory;
2020
import io.rsocket.transport.netty.server.TcpServerTransport;
2121

22+
import java.util.Objects;
23+
import java.util.stream.Collectors;
24+
import org.springframework.beans.factory.ObjectProvider;
2225
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
2326
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2427
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -28,6 +31,7 @@
2831
import org.springframework.messaging.rsocket.RSocketRequester;
2932
import org.springframework.messaging.rsocket.RSocketStrategies;
3033
import org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler;
34+
import org.springframework.util.RouteMatcher;
3135

3236
/**
3337
* {@link EnableAutoConfiguration Auto-configuration} for Spring RSocket support in Spring
@@ -37,16 +41,20 @@
3741
* @since 2.2.0
3842
*/
3943
@Configuration(proxyBeanMethods = false)
40-
@ConditionalOnClass({ RSocketRequester.class, RSocketFactory.class, TcpServerTransport.class })
44+
@ConditionalOnClass({RSocketRequester.class, RSocketFactory.class, TcpServerTransport.class})
4145
@AutoConfigureAfter(RSocketStrategiesAutoConfiguration.class)
4246
public class RSocketMessagingAutoConfiguration {
4347

48+
4449
@Bean
4550
@ConditionalOnMissingBean
46-
public RSocketMessageHandler messageHandler(RSocketStrategies rSocketStrategies) {
51+
public RSocketMessageHandler messageHandler(RSocketStrategies rSocketStrategies, ObjectProvider<RSocketMessageHandlerCustomizer> customizers) {
4752
RSocketMessageHandler messageHandler = new RSocketMessageHandler();
4853
messageHandler.setRSocketStrategies(rSocketStrategies);
49-
return messageHandler;
54+
RSocketMessageHandlerCustomizer rSocketMessageHandlerCustomizer = customizers.getIfAvailable();
55+
return rSocketMessageHandlerCustomizer.setRouteMatcher(rSocketStrategies.routeMatcher());
5056
}
5157

58+
59+
5260
}

0 commit comments

Comments
 (0)