Class ServerRSocketMessageHandler
java.lang.Object
org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler<org.springframework.messaging.handler.CompositeMessageCondition>
org.springframework.messaging.handler.annotation.reactive.MessageMappingMessageHandler
org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler
org.springframework.integration.rsocket.ServerRSocketMessageHandler
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanNameAware,org.springframework.beans.factory.InitializingBean,org.springframework.context.ApplicationContextAware,org.springframework.context.ApplicationEventPublisherAware,org.springframework.context.EmbeddedValueResolverAware,org.springframework.messaging.ReactiveMessageHandler
public class ServerRSocketMessageHandler
extends org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler
implements org.springframework.context.ApplicationEventPublisherAware
An
IntegrationRSocketMessageHandler extension for RSocket service side.
In a plain Spring Integration application instances of this class are created by the
ServerRSocketConnector internally and a new RSocket server is started over there.
When an existing RSocket server is in use, an instance of this class has to be
provided as a RSocketMessageHandler.responder() into that server and a ServerRSocketConnector
should accept the same instance as a delegate.
With a messageMappingCompatible option this class also handles
MessageMapping methods,
covering both Spring Integration and standard
RSocketMessageHandler
functionality.
- Since:
- 5.2.1
-
Field Summary
Fields Modifier and Type Field Description protected booleanmessageMappingCompatible -
Constructor Summary
Constructors Constructor Description ServerRSocketMessageHandler()Create an service side RSocket message handler instance for delegating toIntegrationRSocketEndpointbeans and collectRSocketRequesters from client connections.ServerRSocketMessageHandler(boolean messageMappingCompatible)Create an service side RSocket message handler instance for delegating toIntegrationRSocketEndpointbeans and collectRSocketRequesters from client connections. -
Method Summary
Modifier and Type Method Description voidaddEndpoint(IntegrationRSocketEndpoint endpoint)booleandetectEndpoints()org.springframework.messaging.rsocket.RSocketRequestergetClientRSocketRequester(java.lang.Object key)Obtain a connectedRSocketRequestermapped by provided key or null.java.util.Map<java.lang.Object,org.springframework.messaging.rsocket.RSocketRequester>getClientRSocketRequesters()Get connectedRSocketRequesters mapped by the keys from the connect messages.protected java.util.List<? extends org.springframework.messaging.handler.invocation.reactive.HandlerMethodArgumentResolver>initArgumentResolvers()protected java.util.List<? extends org.springframework.messaging.handler.invocation.reactive.HandlerMethodReturnValueHandler>initReturnValueHandlers()voidsetApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)voidsetClientRSocketKeyStrategy(java.util.function.BiFunction<java.util.Map<java.lang.String,java.lang.Object>,org.springframework.core.io.buffer.DataBuffer,java.lang.Object> clientRSocketKeyStrategy)Configure aBiFunctionto extract a key for mapping connectedRSocketRequesters.Methods inherited from class org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler
afterPropertiesSet, extendMapping, getCondition, getDefaultDataMimeType, getDefaultMetadataMimeType, getEncoders, getMetadataExtractor, getRSocketStrategies, handleNoMatch, responder, responder, setDecoders, setDefaultDataMimeType, setDefaultMetadataMimeType, setEncoders, setMetadataExtractor, setReactiveAdapterRegistry, setRouteMatcher, setRSocketStrategiesMethods inherited from class org.springframework.messaging.handler.annotation.reactive.MessageMappingMessageHandler
createExceptionMethodResolverFor, getConversionService, getDecoders, getDestination, getDirectLookupMappings, getMappingComparator, getMappingForMethod, getMatchingMapping, getRouteMatcher, getValidator, handleMatch, obtainRouteMatcher, processDestinations, setConversionService, setEmbeddedValueResolver, setValidatorMethods inherited from class org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler
detectHandlerMethods, getApplicationContext, getArgumentResolverConfigurer, getArgumentResolvers, getBeanName, getDestinationLookup, getHandlerMethods, getHandlerPredicate, getReactiveAdapterRegistry, getReturnValueHandlerConfigurer, handleMessage, registerExceptionHandlerAdvice, registerHandlerMethod, setApplicationContext, setArgumentResolverConfigurer, setBeanName, setHandlerPredicate, setHandlers, setReturnValueHandlerConfigurer
-
Field Details
-
messageMappingCompatible
protected final boolean messageMappingCompatible
-
-
Constructor Details
-
ServerRSocketMessageHandler
public ServerRSocketMessageHandler()Create an service side RSocket message handler instance for delegating toIntegrationRSocketEndpointbeans and collectRSocketRequesters from client connections. -
ServerRSocketMessageHandler
public ServerRSocketMessageHandler(boolean messageMappingCompatible)Create an service side RSocket message handler instance for delegating toIntegrationRSocketEndpointbeans and collectRSocketRequesters from client connections. WhenmessageMappingCompatible == true, this class also handlesMessageMappingmethods as it is done by the standardRSocketMessageHandler.- Parameters:
messageMappingCompatible- whether handle alsoMessageMapping.
-
-
Method Details
-
setClientRSocketKeyStrategy
public void setClientRSocketKeyStrategy(java.util.function.BiFunction<java.util.Map<java.lang.String,java.lang.Object>,org.springframework.core.io.buffer.DataBuffer,java.lang.Object> clientRSocketKeyStrategy)Configure aBiFunctionto extract a key for mapping connectedRSocketRequesters. Defaults to thedestinationa client is connected.- Parameters:
clientRSocketKeyStrategy- theBiFunctionto use.
-
getClientRSocketRequesters
public java.util.Map<java.lang.Object,org.springframework.messaging.rsocket.RSocketRequester> getClientRSocketRequesters()Get connectedRSocketRequesters mapped by the keys from the connect messages.- Returns:
- the map of connected
RSocketRequesters. - See Also:
setClientRSocketKeyStrategy(java.util.function.BiFunction<java.util.Map<java.lang.String, java.lang.Object>, org.springframework.core.io.buffer.DataBuffer, java.lang.Object>)
-
getClientRSocketRequester
@Nullable public org.springframework.messaging.rsocket.RSocketRequester getClientRSocketRequester(java.lang.Object key)Obtain a connectedRSocketRequestermapped by provided key or null.- Parameters:
key- the key for mappedRSocketRequesterif any.- Returns:
- the mapped
RSocketRequesteror null.
-
setApplicationEventPublisher
public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)- Specified by:
setApplicationEventPublisherin interfaceorg.springframework.context.ApplicationEventPublisherAware
-
detectEndpoints
public boolean detectEndpoints() -
addEndpoint
-
initArgumentResolvers
protected java.util.List<? extends org.springframework.messaging.handler.invocation.reactive.HandlerMethodArgumentResolver> initArgumentResolvers()- Overrides:
initArgumentResolversin classorg.springframework.messaging.handler.annotation.reactive.MessageMappingMessageHandler
-
initReturnValueHandlers
protected java.util.List<? extends org.springframework.messaging.handler.invocation.reactive.HandlerMethodReturnValueHandler> initReturnValueHandlers()- Overrides:
initReturnValueHandlersin classorg.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler
-