The way to use to the load balancing feature through RSocketRequester is not straight forward and we need to change that but the 1.1 M1 upgrade (see #25331) should bring an updated API that we should aim to work well against.

Comment From: maxim-bandurko-lsvt

@rstoyanchev After these updates somethings is still missing in dependencies, as it can't find RSocketClient any more. It brings this error to any RSocket MessageMapping:

--- [ctor-http-nio-5] r.n.channel.ChannelOperationsHandler     : [id: 0x90cbdc93, L:/127.0.0.1:8443 - R:/127.0.0.1:53385] Error was received while reading the incoming data. The connection will be closed.

java.lang.NoClassDefFoundError: io/rsocket/core/RSocketClient
        at org.springframework.messaging.rsocket.DefaultRSocketRequester.<init>(DefaultRSocketRequester.java:75) ~[spring-messaging-5.3.0-SNAPSHOT.jar:5.3.0-SNAPSHOT]
        at org.springframework.messaging.rsocket.RSocketRequester.wrap(RSocketRequester.java:130) ~[spring-messaging-5.3.0-SNAPSHOT.jar:5.3.0-SNAPSHOT]
        at org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler.createResponder(RSocketMessageHandler.java:430) ~[spring-messaging-5.3.0-SNAPSHOT.jar:5.3.0-SNAPSHOT]
        at org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler.lambda$responder$6(RSocketMessageHandler.java:411) ~[spring-messaging-5.3.0-SNAPSHOT.jar:5.3.0-SNAPSHOT]
        at io.rsocket.core.RSocketServer.lambda$acceptSetup$7(RSocketServer.java:429) ~[rsocket-core-1.1.0-M1.jar:na]
        at io.rsocket.core.ServerSetup$DefaultServerSetup.acceptRSocketSetup(ServerSetup.java:69) ~[rsocket-core-1.1.0-M1.jar:na]
        at io.rsocket.core.RSocketServer.acceptSetup(RSocketServer.java:399) ~[rsocket-core-1.1.0-M1.jar:na]
        at io.rsocket.core.RSocketServer.accept(RSocketServer.java:360) ~[rsocket-core-1.1.0-M1.jar:na]
        at io.rsocket.core.RSocketServer.lambda$acceptor$0(RSocketServer.java:345) ~[rsocket-core-1.1.0-M1.jar:na]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) ~[reactor-core-3.4.0-SNAPSHOT.jar:na]
        at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) ~[reactor-core-3.4.0-SNAPSHOT.jar:na]
        at io.rsocket.core.ClientServerInputMultiplexer$InternalDuplexConnection.onNext(ClientServerInputMultiplexer.java:330) ~[rsocket-core-1.1.0-M1.jar:na]
        at io.rsocket.core.ClientServerInputMultiplexer.onNext(ClientServerInputMultiplexer.java:176) ~[rsocket-core-1.1.0-M1.jar:na]
        at io.rsocket.core.ClientServerInputMultiplexer.onNext(ClientServerInputMultiplexer.java:50) ~[rsocket-core-1.1.0-M1.jar:na]
        at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120) ~[reactor-core-3.4.0-SNAPSHOT.jar:na]
        at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:256) ~[reactor-netty-core-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:362) ~[reactor-netty-core-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:373) ~[reactor-netty-core-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:508) ~[reactor-netty-http-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at reactor.netty.http.server.WebsocketServerOperations.onInboundNext(WebsocketServerOperations.java:161) ~[reactor-netty-http-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94) ~[reactor-netty-core-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1526) ~[netty-handler-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1275) ~[netty-handler-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1322) ~[netty-handler-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
        at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]
Caused by: java.lang.ClassNotFoundException: io.rsocket.core.RSocketClient
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na]
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
        ... 51 common frames omitted

Spring Boot 2.4.0-SNAPSHOT That has at current moment: rsocket-core-1.1.0-M1 rsocket-transport-netty-1.1.0-M1 spring-messaging-5.3.0-SNAPSHOT

Comment From: bclozel

The current Spring Boot and Spring Framework SNAPSHOTs are using RSocket 1.1.0-SNAPSHOT.

The missing RSocket class has been relocated recently in SNAPSHOTs.

Comment From: maxim-bandurko-lsvt

@bclozel Just refreshed with most recent and it works right now properly. Thank you!