流中出现故障时如何重新连接?

时间:2019-02-11 02:33:38

标签: java spring

我有一个看起来像这样的代码

@PostConstruct
public void setUpStreamer() {
    WebClient.create(daemonEndpoint)
        .get()
        .uri("/events)
        .retrieve()
        .bodyToFlux(String.class)
        .flatMap(Mono::justOrEmpty)
        .map(s -> {
            try {
                return mapper.readValue(s, Map.class);
            } catch (IOException e) {
                log.warn("unable to parse {} as JSON", s);
                return null;
            }
        })
        .flatMap(Mono::justOrEmpty)
        .subscribe(
            events -> {
                log.info("service event(s) detected");
            },
            throwable -> log.error("Error on event stream: {}", throwable.getMessage(), throwable),
            () -> log.warn("event stream completed")
        );
}

我想做的是在流失败时,基本上事件端点决定断开连接或重新启动,然后将重新创建流光。

类似这样的东西

            throwable -> {
                log.error("Error on event stream: {}", throwable.getMessage(), throwable);
                setUpStreamer();
            },
            () -> {
                log.warn("event stream completed");
                setUpStreamer();
            }

这是唯一的方法,还是有一些更好的注释或运算符可以为我完成工作?

0 个答案:

没有答案