如何更改訂戶的錯誤?我有一個從數據庫中消耗的冷流。請參閱以下情況:錯誤的可觀察更改訂戶
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'將來自錯誤序列(如果有的話)的數據與來自後備的數據連接起來順序,這符合法案 –