gpt4 book ai didi

java - Reactor 有没有办法忽略错误信号?

转载 作者:行者123 更新时间:2023-12-02 08:21:33 28 4
gpt4 key购买 nike

我有一个包含多个 URL 和端口的数组。对于他们每个人,我需要发送和接收返回的内容:

Flux.fromArray(trackersArray)
.flatMap(tracker ->
ConnectToTracker.connect(tracker.getTracker(), tracker.getPort()))

我与 UDP 中的服务器通信,因此我无法判断服务器是否处于 Activity 状态,除非我发送一条“根据某些规则需要响应”的消息它。

ConnectToTracker.connect 可能会在服务器响应时发送 onNext 信号,或者在服务器未响应时发送 onError 信号(SocketTimeOutException) 或任何其他失败(一般 IOException)。

例如,如果 onError 信号等于 SocketTimeOutException,我不想终止 flux相反,我想尝试与我拥有的每个跟踪器进行通信。

This link包含我可以用来处理错误但不能忽略错误的所有操作。

如果这很重要,我正在使用 Reactor 3

更新:

我做了一个丑陋的把戏,但是有效:

Flux.fromArray(trackersArray)
.handle((Tracker tracker, SynchronousSink<ConnectResponse> sink) -> {
ConnectToTracker.connect(tracker.getTracker(), tracker.getPort())
.subscribe(sink::next, error -> {
if (!(error instanceof SocketTimeoutException))
sink.error(error);
}, sink::complete);
})

如果您有更好的地方,请自由填写。

最佳答案

由于您已经在平面 map 中处理网址,因此请使用onErrorResume(e -> Mono.empty())。这将使平面 map 忽略该错误。编辑:在平面图内,位于 lambda 的右侧

关于java - Reactor 有没有办法忽略错误信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243630/

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