エラー時に加入者を変更するには?私はデータベースからのコールドストリームを消費しています。次のケースを参照してください。エラーの観測可能な加入者の変更
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();
障害の影響を受けるすべてのホスト名を送信します。しかし、上記の私のコメントを参照してください。ストリームが2度消されるので、これは正しいとは思わない。 theRestOfHostnamesInside
の実装では、私は思いますcredsStream.map(c -> c.getHostname()), e)
ある場合たとえば、理想的には、エラーハンドラは、前のリストにリストを追加するリストにホスト名の残りの部分を抽出し、別のサブスクリプションを使用してストリームを継続すべきである(参照ラインがマークとともに])。
私は同じDBリクエストをやり直すという考えが嫌いです。私にとっては効率的ではないようです。 – sancho21
元のエラーの内容によって異なりますが、欠落したキーだけをクエリする2番目のシーケンスにフォールバックすることができます。エラーを起こしたシーケンス(存在する場合)のデータとフォールバックのデータを連結しますシーケンス、これは請求書に合う –