Affects: 6.1.12
After unsuccessfully trying to get a custom MimeType, I discovered that my decoders were being overwritten by something.
Configuration file:
@Configuration
public class RSocketServerConfiguration {
@Bean
public RSocketMessageHandler rsocketMessageHandler() {
RSocketMessageHandler handler = new RSocketMessageHandler();
handler.setRouteMatcher(new PathPatternRouteMatcher());
return handler;
}
@Bean
public DefaultMetadataExtractor defaultMetadataExtractor() {
DefaultMetadataExtractor defaultMetadataExtractor = new DefaultMetadataExtractor(
JwtDecoder.textJwt()
);
defaultMetadataExtractor.metadataToExtract(MimeType.valueOf("application/jwt"), String.class, "jwt");
return defaultMetadataExtractor;
}
@Bean
public RSocketRequester getRSocketRequester(
@Value("${spring.rsocket.server.port}") Integer port,
RSocketMessageHandler handler
) {
RSocketRequester.Builder builder = RSocketRequester.builder();
return builder
.rsocketConnector(rSocketConnector -> rSocketConnector
.reconnect(Retry.fixedDelay(2, Duration.ofSeconds(2)))
.acceptor(handler.responder())
)
.rsocketStrategies(strategies -> {
strategies.decoder(JwtDecoder.textJwt())
.metadataExtractorRegistry(registry -> registry
.metadataToExtract(
MimeType.valueOf("application/jwt"),
String.class,
"jwt")
);
})
.metadataMimeType(MimeTypeUtils.APPLICATION_JSON)
.tcp("localhost", port);
}
}