오류시 구독자를 변경하는 방법? 데이터베이스에서 차가운 스트림을 사용합니다. 다음 사례를 참조하십시오.오류시 관찰 가능한 변경 가입자
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]와).
나는 동일한 DB 요청을 다시하는 생각을 좋아하지 않습니다. 그것은 나에게 효율적이지 않은 것 같습니다. – sancho21
원래 오류가 무엇인지에 따라 다르지만 대신 누락 된 키만 쿼리하는 두 번째 시퀀스에서 폴백 할 수 있습니다. 'onErrorResumeNext'는 오류가 발생한 시퀀스의 데이터와 오류가 발생한 시퀀스의 데이터를 폴백의 데이터와 연결하기 때문에 순서,이 법안에 맞는 –