org.springframework.messaging.rsocket

## Interface RSocketRequester

- All Superinterfaces:
    reactor.core.Disposable

      public interface RSocketRequester
      extends reactor.core.Disposable

  A thin wrapper around a sending `RSocket` with a fluent API accepting and returning higher level Objects for input and for output, along with methods to prepare routing and other metadata.
  Since:
    5.2
  Author:
    Rossen Stoyanchev, Brian Clozel

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `RSocketRequester.Builder` Builder to create a requester by connecting to a server.
    `static interface` | `RSocketRequester.MetadataSpec<S extends RSocketRequester.MetadataSpec<S>>` Spec for providing additional composite metadata entries.
    `static interface` | `RSocketRequester.RequestSpec` Spec to declare the input for an RSocket request.
    `static interface` | `RSocketRequester.RetrieveSpec` Spec to declare the expected output for an RSocket request.

    - ### Nested classes/interfaces inherited from interface reactor.core.Disposable

      `reactor.core.Disposable.Composite, reactor.core.Disposable.Swap`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `static RSocketRequester.Builder` | `builder()` Obtain a builder to create a client `RSocketRequester` by connecting to an RSocket server.
    `MimeType` | `dataMimeType()` Return the data `MimeType` selected for the underlying RSocket at connection time.
    `default void` | `dispose()` Shortcut method that delegates to the same on the underlying `rsocketClient()` in order to close the connection from the underlying transport and notify subscribers.
    `default boolean` | `isDisposed()` Shortcut method that delegates to the same on the underlying `rsocketClient()`.
    `RSocketRequester.RequestSpec` | `metadata(Object metadata, MimeType mimeType)` Begin to specify a new request with the given metadata value, which can be a concrete value or any producer of a single value that can be adapted to a `Publisher` via `ReactiveAdapterRegistry`.
    `MimeType` | `metadataMimeType()` Return the metadata `MimeType` selected for the underlying RSocket at connection time.
    `RSocketRequester.RequestSpec` | `route(String route, Object... routeVars)` Begin to specify a new request with the given route to a remote handler.
    `RSocket` | `rsocket()` Return the underlying `RSocket` if the requester was created with a "live" RSocket via `wrap(RSocket, MimeType, MimeType, RSocketStrategies)` or via one of the (deprecated) connect methods on the `RSocketRequester` builder, or otherwise return `null`.
    `RSocketClient` | `rsocketClient()` Return the underlying `RSocketClient` used to make requests with.
    `static RSocketRequester` | `wrap(RSocket rsocket, MimeType dataMimeType, MimeType metadataMimeType, RSocketStrategies strategies)` Wrap an existing `RSocket`.

- - ### Method Detail

    - #### rsocketClient

          RSocketClient rsocketClient()

      Return the underlying `RSocketClient` used to make requests with.
      Since:
        5.3

    - #### rsocket

          @Nullable
          RSocket rsocket()

      Return the underlying `RSocket` if the requester was created with a "live" RSocket via `wrap(RSocket, MimeType, MimeType, RSocketStrategies)` or via one of the (deprecated) connect methods on the `RSocketRequester` builder, or otherwise return `null`.

    - #### dataMimeType

          MimeType dataMimeType()

      Return the data `MimeType` selected for the underlying RSocket at connection time. On the client side this is configured via `RSocketRequester.Builder.dataMimeType(MimeType)` while on the server side it's obtained from the `ConnectionSetupPayload`.

    - #### metadataMimeType

          MimeType metadataMimeType()

      Return the metadata `MimeType` selected for the underlying RSocket at connection time. On the client side this is configured via `RSocketRequester.Builder.metadataMimeType(MimeType)` while on the server side it's obtained from the `ConnectionSetupPayload`.

    - #### route

          RSocketRequester.RequestSpec route(String route,
                                             Object... routeVars)

      Begin to specify a new request with the given route to a remote handler.

      The route can be a template with placeholders, e.g. `"flight.{code}"` in which case the supplied route variables are formatted via `toString()` and expanded into the template. If a formatted variable contains a "." it is replaced with the escape sequence "%2E" to avoid treating it as separator by the responder .

      If the connection is set to use composite metadata, the route is encoded as `"message/x.rsocket.routing.v0"`. Otherwise, the route is encoded according to the mime type for the connection.

      Parameters:
        `route` - the route expressing a remote handler mapping
        `routeVars` - variables to be expanded into the route template
      Returns:
        a spec for further defining and executing the request

    - #### metadata

          RSocketRequester.RequestSpec metadata(Object metadata,
                                                @Nullable
                                                MimeType mimeType)

      Begin to specify a new request with the given metadata value, which can be a concrete value or any producer of a single value that can be adapted to a `Publisher` via `ReactiveAdapterRegistry`.
      Parameters:
        `metadata` - the metadata value to encode
        `mimeType` - the mime type that describes the metadata; This is required for connection using composite metadata. Otherwise, the value is encoded according to the mime type for the connection and this argument may be left as `null`.

    - #### dispose

          default void dispose()

      Shortcut method that delegates to the same on the underlying `rsocketClient()` in order to close the connection from the underlying transport and notify subscribers.
      Specified by:
        `dispose` in interface `reactor.core.Disposable`
      Since:
        5.3.7

    - #### isDisposed

          default boolean isDisposed()

      Shortcut method that delegates to the same on the underlying `rsocketClient()`.
      Specified by:
        `isDisposed` in interface `reactor.core.Disposable`
      Since:
        5.3.7

    - #### builder

          static RSocketRequester.Builder builder()

      Obtain a builder to create a client `RSocketRequester` by connecting to an RSocket server.

    - #### wrap

          static RSocketRequester wrap(RSocket rsocket,
                                       MimeType dataMimeType,
                                       MimeType metadataMimeType,
                                       RSocketStrategies strategies)

      Wrap an existing `RSocket`. Typically for internal framework use, to wrap the remote `RSocket` in a client or server responder, but it can also be used to wrap any `RSocket`.