作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含多个 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/
我是一名优秀的程序员,十分优秀!