2017-09-30 4 views
1

akka.Sourceの第2型パラメータの用途と意味は何ですか?akka.Sourceの第2の型パラメータの使用と意味は何ですか?

サンプルコード: -

def stream: ServiceCall[Source[String, NotUsed], Source[String, NotUsed]] 

私は第二種のパラメータがakka.NotUsedに設定されているデフォルトでは、今まで見てきたように多くのコードによります。しかし、私はそれの重要性が何であるか分かりません。

答えて

7

2番目のパラメータはマテリアライズされた値です。つまり、ソースを実行すると、runメソッドによって返される値です。 Akkaストリームのすべてのストリームの形状には、ソース、シンク、フロー、双方向などがあります。シンクでは、ストリームを折りたたんでいる場合は、値は、結果の将来のあるマテリアライズド値を介して、あなたに与えられます。

ソースの場合
def fold[U, T](zero: U)(f: (U, T) ⇒ U): Sink[T, Future[U]] 

は、しかし、それはあまり目立たないのですが、ここでは一例です:

def actorRef[T](bufferSize: Int, overflowStrategy: OverflowStrategy): Source[T, ActorRef] 

これはそのSourceです実行すると、ActorRefになります。あなたが俳優に送るすべてのメッセージは、ソースから放出されます。 Lagomでこれを使用する場合は、次のようにします。

def stream = ServiceCall { _ => 
    Source.actorRef[String](16, OverflowStrategy.dropHead) 
    .mapMaterializedValue { actor => 
     // send messages here, or maybe pass the actor to somewhere else 
     actor ! "Hello world" 
     // And return NotUsed so that it now materializes to `NotUsed`, as required by Lagom 
     NotUsed 
    } 
} 
関連する問題