提交fire-n-forget请求

zsohkypk  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(413)

在spring引导应用程序中,我有以下用于在rest控制器中提交请求的工作代码:

@GetMapping("/request-response")
public ResponseEntity<Mono<Message>> requestResponseCtr() throws InterruptedException {

    Mono<Message> message = this.rsocketRequesterMono.flatMap(
            requester -> requester.route("request-response")
                    .data(new Message(...))
                    .retrieveMono(Message.class)
                );
    log.info("\nResponse was: {}", message);

    return ResponseEntity.of(Optional.of(message));
}

基于我对rsocketjava文档的理解,我需要用send()替换retrievemono(…),以提交fire-n-forget请求(在文档的第12页)。下面的代码应该可以工作。

@GetMapping("fire-and-forget")
public ResponseEntity<Mono<Void>> fireAndForget() throws InterruptedException {
    log.info("\nFire-And-Forget...");

    this.rsocketRequesterMono.flatMap(
            requester -> requester.route("fire-and-forget")
                    .data(new Message(...))
                    .send()
    );
    return ResponseEntity.of(Optional.of(Mono.empty()));
}

然而,它不起作用。在tcp首次亮相工具上,它没有任何流量。
提交fire-n-forget的正确方法是什么?

bqujaahr

bqujaahr1#

这个电话

this.rsocketRequesterMono.flatMap(
            requester -> requester.route("fire-and-forget")
                    .data(new Message(...))
                    .send()
    );

没有做任何事情,因为没有人订阅它。
你可能需要

ResponseEntity.of(Optional.of(this.rsocketRequesterMono.flatMap(
            requester -> requester.route("fire-and-forget")
                    .data(new Message(...))
                    .send()
    )));

相关问题