Ich habe eine beobachtbare, die Elemente aus vielen Quellen bekommt:RxJava 2. Retry mit Verzögerung, während andere Elemente fortfahren, die verschieden sind
Source { List<Item> data }
Beziehung zwischen Quellen und Gegenstände ist many-to-many und in verschiedenen Quellenelemente könnten sich duplizieren. Element ist eine Entität, die auf den Server hochgeladen werden soll, und der Server akzeptiert keine Duplikate. Um dies zu erreichen, füge ich Sources zusammen und unterscheide ihre Items anhand ihrer IDs und lade dann einzelne Items auf den Server hoch. Wie unten:
Observable.merge(source1(), source2(), source3())
.flatMapIterable(sources -> sources)
.flatMapIterable(source::getItems)
.distinct(item -> item.getId())
.flatMapCompletabale(item -> uploadItem(item))
Artikel-Upload kann mehrere Fehler emittiert und auf einige von ihnen soll ich versuchen Artikel zu laden, sobald es später noch einmal und weitere Gegenstände gehen, während ‚nicht bestanden‘ ein für sein retrying wartet.
Wie kann ich das erneute Hochladen des "fehlgeschlagenen" Elements verschieben und andere Elemente ausführen, während dieses für seinen Versuch wartet?
Vielen Dank im Voraus!
Hallo! Vielen Dank für Ihre Antwort! Könnten Sie mir bitte auch sagen, wie Sie die Anzahl der Wiederholungen erhöhen können? Wie wiederhole 3 mal mit 5 Sekunden Verzögerung. –
Der Blog, auf den ich verwiesen habe, gibt Beispielcode, um genau das zu tun. –