J'essaie de créer un flux que je peux consommer via quelque chose comme un Iterator
. J'implémente une bibliothèque qui expose une interface de type itérateur, ce qui serait la chose la plus simple à consommer pour moi. Mon graphique conçu jusqu'ici est essentiellement Source<Iterator<DataRow>>
. Une chose que je vois jusqu'à présent est d'aplatir à Source<DataRow>
puis utiliser http://doc.akka.io/japi/akka/current/akka/stream/javadsl/StreamConverters.html#asJavaStream-- suivie https://docs.oracle.com/javase/8/docs/api/java/util/stream/BaseStream.html#iterator--Comment obtenir un itérateur d'un ruisseau akka Source?
Mais étant donné qu'il y aura beaucoup de lignes potentiellement, je me demande s'il serait judicieux d'éviter l'étape d'aplatissement (à au moins dans le contexte des flux akka, je suppose qu'il y a des frais mineurs par élément lorsqu'ils sont passés via des étapes), ou s'il y a un moyen plus direct.
Aussi, je suis curieux de savoir comment la contre-pression fonctionne dans le flux créé, en particulier l'itérateur enfant; est-ce que cela ne fait que tamponner un élément?
Pourriez-vous élaborer sur * pourquoi * vous * avez * besoin de le transformer en un Iterator? –
J'implémente une API qui expose un curseur sur des lignes de données (essentiellement l'interface de l'itérateur). Soit je vais devoir consommer un itérateur, soit l'implémenter sur un autre. – Bwmat