2016-07-29 3 views
3

Ich versuche, eine Quelle [Out, Mat] aus einer Zukunft [Quelle [Out, Mat]] zu erstellen und verwendete dazu die integrierte source.fromFuture in Kombination mit flatMapConcat. Bei Verwendung von fromFuture hat die Quelle jedoch einen materialisierten Wert von NotUsed. Wenn flatMap die tatsächliche Quelle verkettet, wird der materialisierte Wert weiterhin nicht verwendet.Akka-Streams - Wie nehme ich den materialisierten Wert der Quelle, die in einer anderen Quelle flamMapConcatenated ist?

Kann der materialisierte Wert einer Quelle, die innerhalb von flatMapConcat verwendet wird, übernommen werden?

Der Code sieht wie folgt aus:

def sourceFromFutureSource[Out,Mat](futureSource: Future[Source[Out,Mat]]): Source[Out, Mat] = { 
Source.fromFuture(futureSource) 
    .flatMapConcat(identity) 
} 
+0

Ich habe versucht, nach einem Weg zu suchen, um Ihr Problem zu lösen, aber ich denke nicht, dass es möglich ist, den ursprünglichen 'Mat' -Typ beizubehalten. Ist es wirklich nicht möglich, nur die Zukunft zu nutzen? Z.B. 'futureSource foreach {src => ...}' –

+0

Akka 2.5 hat [Source.fromFutureSource] eingeführt (https://stackoverflow.com/questions/38666637/akka-streams-how-to-take-the-materialized-value -of-source-was-ist-flatmapconc), die den materialisierten Wert von der asynchronen 'Quelle' behalten – cchantep

Antwort

0

Da Akka 2.5.1 es möglich ist, Source.fromFutureSource zu verwenden. Jetzt können Sie Source.fromFutureSource(futureSource) tun.

+0

Ich denke du meinst Akka 2.5.1. Das ist genau das, wonach ich gesucht habe! – Meeuw

+0

@Meuuw Du hast Recht. Ich habe meinen Beitrag bearbeitet. – Moebius

Verwandte Themen