public interface RSocketClient extends Disposable
RSocketClient contains a Mono<RSocket> source. It uses it to
obtain a live, shared RSocket connection on the first request and on subsequent requests
if the connection is lost. This eliminates the need to obtain a connection first, and makes it
easy to pass a single RSocketClient to use from multiple places.
Request methods of RSocketClient allow multiple subscriptions with each subscription
performing a new request. Therefore request methods accept Mono<Payload> rather than
Payload as on RSocket. By contrast, RSocket request methods cannot be
subscribed to more than once.
Use RSocketConnector to create a client:
RSocketClient client =
RSocketConnector.create()
.metadataMimeType("message/x.rsocket.composite-metadata.v0")
.dataMimeType("application/cbor")
.toRSocketClient(TcpClientTransport.create("localhost", 7000));
Use the RSocketConnector#reconnect
method to configure the retry logic to use whenever a shared RSocket connection needs to
be obtained:
RSocketClient client =
RSocketConnector.create()
.metadataMimeType("message/x.rsocket.composite-metadata.v0")
.dataMimeType("application/cbor")
.reconnect(Retry.fixedDelay(3, Duration.ofSeconds(1)))
.toRSocketClient(TcpClientTransport.create("localhost", 7000));
Disposable.Composite, Disposable.Swap| Modifier and Type | Method and Description |
|---|---|
Mono<Void> |
fireAndForget(Mono<Payload> payloadMono)
Perform a Fire-and-Forget interaction via
RSocket.fireAndForget(Payload). |
Mono<Void> |
metadataPush(Mono<Payload> payloadMono)
Perform a Metadata Push via
RSocket.metadataPush(Payload). |
Flux<Payload> |
requestChannel(org.reactivestreams.Publisher<Payload> payloads)
Perform a Request-Channel interaction via
RSocket.requestChannel(Publisher). |
Mono<Payload> |
requestResponse(Mono<Payload> payloadMono)
Perform a Request-Response interaction via
RSocket.requestResponse(Payload). |
Flux<Payload> |
requestStream(Mono<Payload> payloadMono)
Perform a Request-Stream interaction via
RSocket.requestStream(Payload). |
Mono<RSocket> |
source()
Return the underlying source used to obtain a shared
RSocket connection. |
dispose, isDisposedMono<RSocket> source()
RSocket connection.Mono<Void> fireAndForget(Mono<Payload> payloadMono)
RSocket.fireAndForget(Payload). Allows
multiple subscriptions and performs a request per subscriber.Mono<Payload> requestResponse(Mono<Payload> payloadMono)
RSocket.requestResponse(Payload). Allows
multiple subscriptions and performs a request per subscriber.Flux<Payload> requestStream(Mono<Payload> payloadMono)
RSocket.requestStream(Payload). Allows
multiple subscriptions and performs a request per subscriber.Flux<Payload> requestChannel(org.reactivestreams.Publisher<Payload> payloads)
RSocket.requestChannel(Publisher). Allows
multiple subscriptions and performs a request per subscriber.Mono<Void> metadataPush(Mono<Payload> payloadMono)
RSocket.metadataPush(Payload). Allows multiple
subscriptions and performs a request per subscriber.