如何更改订户的错误?我有一个从数据库中消耗的冷流。请参阅以下情况:错误的可观察更改订户
return coctailBundleStream
.doOnNext(c -> {
hostnames.add(c.get(KEY_HOSTNAME)); // [A]
sendToOutboundQueue(c.get(KEY_CREDS));
archiveSentMessage(c.get(KEY_CREDS), c.get(KEY_MESSAGE_ID));
})
.doOnComplete(this::saveCutOffTime)
.doOnError(e -> informUserImpactedHostnames(hostnames,
theRestOfHostnamesInside(credsXmlStream, e))) // I don't think this is right
.onErrorResumeNext(Flowable.empty())
.count();
我想发送受故障影响的所有主机名。但是,请参阅我上面的评论。我不认为这是正确的,因为流被消耗了两次。例如如果theRestOfHostnamesInside
实现是credsStream.map(c -> c.getHostname()), e)
我认为,理想情况下,错误处理程序应该使用其他认购其提取主机名的其余部分到一个列表,然后追加与以前的清单列表中继续流(见行标与[A])。
我不喜欢重做相同的数据库请求的想法。这对我来说似乎没有效率。 – sancho21
它取决于原始错误是什么,但是你可以退回第二个序列,只查询丢失的键......因为'onErrorResumeNext'将来自错误序列(如果有的话)的数据与来自后备的数据连接起来顺序,这符合法案 –