[解決済み] NotUsedとDoneの理解
2022-02-12 03:22:07
質問
の目的・意義が理解できず困っています。
NotUsed
と
Done
をAkka Streamsに追加しました。
次の2つの簡単な例を見てみましょう。
NotUsedを使用する。
implicit val system = ActorSystem("akka-streams")
implicit val materializer = ActorMaterializer()
val myStream: RunnableGraph[NotUsed] =
Source.single("stackoverflow")
.map(s => s.toUpperCase())
.to(Sink.foreach(println))
val runResult:NotUsed = myStream.run()
Doneを使用する
implicit val system = ActorSystem("akka-streams")
implicit val materializer = ActorMaterializer()
val myStream: RunnableGraph[Future[Done]] =
Source.single("stackoverflow")
.map(s => s.toUpperCase())
.toMat(Sink.foreach(println))(Keep.right)
val runResult: Future[Done] = myStream.run()
これらの例を実行すると、どちらの場合も同じ出力が得られます。
STACKOVERFLOW //output
では、NotUsedとDoneとはいったい何なのでしょうか?また、どのような場合にどちらを選ぶべきでしょうか?
解決するには?
まず、選択するのは
NotUsed
と
Future[Done]
(のみならず
Done
).
さて、本来は
マテリアライズドバリュー
を使用することで、グラフを構成するさまざまなコンビネータ (
to
と
toMat
と
Keep.right
).
マテリアライズドバリューは、ストリームの実行中に対話するための方法です。この選択は、ストリームで処理されるデータには影響を与えず、そのため、どちらの場合でも同じ出力が表示されます。同じ要素(文字列 "stackoverflow")が両方のストリームを通過しています。
この選択は、ストリームを実行した後、メインプログラムが何をすることになっているかによって決まります。
-
と対話することに興味がない場合。
NotUsed
が正しい選択です。これは単なるダミーオブジェクトで、ストリームとの相互作用が許可されていない、あるいは必要ないという情報を伝達します -
他のアクションを実行するためにストリームの完了をリッスンする必要がある場合、そのために
Future[Done]
. こうすることで、(例えば)以下のようにコールバックをアタッチすることができます。onComplete
またはmap
.
関連
-
[解決済み】Spark - アプリの投稿時に「設定にマスターURLが設定されている必要があります」というエラーが発生する
-
[解決済み] Scalaでループから抜け出すにはどうしたらいいですか?
-
[解決済み] 実行時に変数の型を取得したい
-
[解決済み] scala 2.11.0 REPL を終了するには?
-
[解決済み] Scalaで定期的に関数を実行する
-
[解決済み] SparkSQL - パーケットファイルを直接読み込む
-
[解決済み] MapのmapValuesとtransformの違いについて
-
[解決済み】Scala 2.8のコレクション・ライブラリは「歴史上最も長い遺書」のケースか?[クローズド] Scala
-
[解決済み】Scalaにおける中括弧と括弧の正式な違い、また、どのような場合に使用すべきなのか?
-
[解決済み] Scalaは、コレクションをMap-by-keyに変換する最良の方法ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Sparkです。CoarseGrainedSchedulerが見つかりませんでした。
-
[解決済み] ScalaのSeqへのアペンド
-
[解決済み] Scala - case classを木のように(きれいに)印刷する方法
-
[解決済み] Scalaの変数の表示形式
-
[解決済み] TimeoutExceptionが発生した場合、どのような原因が考えられるでしょうか。Sparkで作業しているときに[n秒]後にFuturesがタイムアウトしました[重複]。
-
[解決済み] scala.Float to java.Float k/v変換でScala MapをJava Mapに変換するにはどうしたらいいですか?
-
[解決済み] self-typesとtrait subclassの違いは何ですか?
-
[解決済み】Scalaのコンテキストとビューバウンドとは何ですか?
-
[解決済み] Scalaの識別子 "implicitly "とは?
-
[解決済み] Scalaのパターンマッチングシステムで比較演算子を使う