gpt4 book ai didi

spring-boot - Spring Boot RSocketRequester处理服务器重启

转载 作者:行者123 更新时间:2023-12-03 15:29:43 24 4
gpt4 key购买 nike

我有一个关于Springs RSocketRequester的问题。我有一个rsocket服务器和客户端。客户端连接到该服务器并请求@MessageMapping端点。它按预期工作。

但是,如果我重新启动服务器该怎么办。如何从客户端自动重新连接到rsocket服务器?谢谢

服务器:

@Controller
class RSC {

@MessageMapping("pong")
public Mono<String> pong(String m) {
return Mono.just("PONG " + m);
}
}

客户:
@Bean
public RSocketRequester rSocketRequester() {
return RSocketRequester
.builder()
.connectTcp("localhost", 7000)
.block();

}

@RestController
class RST {

@Autowired
private RSocketRequester requester;

@GetMapping(path = "/ping")
public Mono<String> ping(){
return this.requester
.route("pong")
.data("TEST")
.retrieveMono(String.class)
.doOnNext(System.out::println);
}
}

最佳答案

已针对Spring Framework 5.2.6+进行更新
您可以使用io.rsocket.core.RSocketConnector#reconnect实现它。

@Bean
Mono<RSocketRequester> rSocketRequester(RSocketRequester.Builder rSocketRequesterBuilder) {
return rSocketRequesterBuilder
.rsocketConnector(connector -> connector
.reconnect(Retry.fixedDelay(Integer.MAX_VALUE, Duration.ofSeconds(1))))
.connectTcp("localhost", 7000);
}
@RestController
public class RST {
@Autowired
private Mono<RSocketRequester> rSocketRequesterMono;

@GetMapping(path = "/ping")
public Mono<String> ping() {
return rSocketRequesterMono.flatMap(rSocketRequester ->
rSocketRequester.route("pong")
.data("TEST")
.retrieveMono(String.class)
.doOnNext(System.out::println));
}
}

关于spring-boot - Spring Boot RSocketRequester处理服务器重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com