All Downloads are FREE. Search and download functionalities are using the official Maven repository.

driven-adapter.rsocket-requester.rsocket-requester.mustache Maven / Gradle / Ivy

Go to download

Gradle plugin to create a clean application in Java that already works, It follows our best practices!

There is a newer version: 3.20.10
Show newest version
package {{package}}.rsocket.service;

{{#lombok}}
import lombok.RequiredArgsConstructor;
{{/lombok}}
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import org.springframework.messaging.rsocket.RSocketRequester;

@Service
{{#lombok}}
@RequiredArgsConstructor
{{/lombok}}
public class RsocketAdapter // implements Gateway from domain
{

    private final RSocketRequester rSocketRequester;
    {{^lombok}}

    public RsocketAdapter(RSocketRequester rSocketRequester) {
        this.rSocketRequester = rSocketRequester;
    }
    {{/lombok}}

    // interaction model Request/Response
    public Mono callRouteRequest(Object objRequest/* change for object request */) {
        return this.rSocketRequester
            .route("route.request.response")
            .data(objRequest)
            .retrieveMono(Object.class)
            .log();
    }

    // interaction model Fire-and-Forget
    public Mono callRouteFireForget(Object objRequest/* change for object request */) {
        return this.rSocketRequester
            .route("route.fire.forget")
            .data(objRequest)
            .send()
            .log();
    }

    // interaction model Request/Stream
    public Flux callRouteRequestStream() {
        return this.rSocketRequester
            .route("route.request.stream")
            .retrieveFlux(Object.class)
            .log();
    }

    // interaction model Channel
    public Flux callRouteChannel(Flux objRequest) {
        return this.rSocketRequester
            .route("route.channel")
            .data(objRequest)
            .retrieveFlux(Object.class)
            .log();
    }
}