Comment créer une Source que l'on peut recevoir des éléments plus tard par l'intermédiaire d'un appel de méthode?
Je voudrais créer un Source
et, plus tard, de pousser les éléments sur elle, comme dans:
val src = ... //create the Source here
//and then, do something like this
pushElement(x1, src)
pushElement(x2, src)
Quelle est la méthode recommandée pour ce faire?
Merci!
- Ce pourrait être le même que: stackoverflow.com/questions/29072963/...
- En effet. Bien que je pensais plus à un moyen de simplement alimenter le flux par l'envoi de messages à certains acteur, sans instanciation ou d'avoir une classe pour cet acteur. Je crois que c'est possible avec le
Source.actorRef
fonctionnalités, comme je le vois dans le post que vous avez lié et ici: stackoverflow.com/questions/30785011/.... Merci beaucoup) - Vous pouvez également trouver cette réponse utile: stackoverflow.com/questions/40345697/...
Vous devez vous connecter pour publier un commentaire.
Il y a trois façons cela peut être réalisé:
1. Post Matérialisation avec SourceQueue
Vous pouvez utiliser
Source.queue
qui matérialise l'Écoulement dans unSourceQueue
:2. Post Matérialisation avec l'Acteur
Il y a une question similaire, et de répondre à ici, l'essentiel étant que vous matérialiser le flux comme un ActorRef et envoyer des messages pour que ref:
3. Pré Matérialisation avec l'Acteur
De la même manière, vous pouvez créer explicitement un Acteur qui contient un tampon de message, utilisez qu'un Acteur, pour créer une Source, puis de l'envoyer que des messages d'acteurs comme indiqué dans la réponse ici:
mapMaterializedValue
il va créer une autre source. Il utilise un Avenir pour obtenir la file d'attente de la source, il veut revenir.Après avoir joué et à la recherche d'une bonne solution pour ce que je suis tombé sur cette solution qui leur est propre, simple, et fonctionne à la fois pré-et post-matérialisation.
https://stackoverflow.com/a/32553913/6791842
De sortie: