私はPlayFramework 2.5.3を使用しており、akka.event.EventStream
からakka.stream.scaladsl.Source
を作成したいと考えています(イベントストリームはアクターシステムの一部です)。イベントストリームは特定のタイプのイベントを生成するので、特定のタイプのイベントに登録してplay.api.mvc.Results.chunked
を使用してプッシュする必要があります。 Akka Streams 2.4.5を使ってそのようなSource
を作成する簡単な方法はありますか?EventStreamからソースを作成する
5
A
答えて
5
Source.actorRef
をサブスクリプションとともに使用できます。 actorRef
ソースは、例えば、それが自然にその内部バッファのための背圧オーバーフロー戦略をサポートしていない、やや限られていることを
// choose the buffer size of the actor source and how the actor
// will react to its overflow
val eventListenerSource = Source.actorRef[YourEventType](32, OverflowStrategy.dropHead)
// run the stream and obtain all materialized values
val (eventListener, ...) = eventListenerSource
.viaMat(...)(Keep.left)
<...>
.run()
// subscribe the source actor to the stream
actorSystem.eventStream.subscribe(eventListener, classOf[YourEventType])
// now events emitted by the source will go to the actor
// and through it to the stream
注:この操作を行うことができますのでSource.actorRef
は、ActorRef
に具体化源です。 Source.actorPublisher
をActorPublisher[YourEventType]
の特性を拡張する俳優と一緒に使用したい場合は、少しだけコントロールします。しかし、EventStream
は純粋なプッシュベースのソースなので、ではSource.actorRef
よりもはるかに多くのことを行うことができないため、より簡単な方法を使用することもできます。
関連する問題
- 1. AkkaのEventStreamからサーバー側のイベントを作成するにはどうすればよいですか?
- 2. 生成されたソースからXMLを作成する
- 3. Yoctoソースを作成する
- 4. 複数のソースからページ分割を作成する
- 5. CSVソースからdjangoモデルを作成する
- 6. 複数のRESTfulソースから複合データリストを作成するアプローチ
- 7. Future [Iterator]からソースを作成する方法は?
- 8. Makefile - ソースからターゲットを生成する
- 9. IDEA - "外部モデルからインポート"と "既存のソースから作成"
- 10. UbuntuのソースからCouchDBを自動的に作成します。
- 11. Javaソースから.jarを作成すると動作しません
- 12. EventStreamとEventBusの相違点
- 13. SSE3とSSE4を使用するソースからのテンソルフローを作成する
- 14. 異種ソースのインターフェイスを作成する
- 15. PHPソースからmakeを使用してrpmパッケージを作成
- 16. 失われたソースからグリッドミックスを再作成
- 17. ソースからプログラムをコンパイルした後にnpmパッケージを作成するには?
- 18. ScalaソースからUML図を生成
- 19. ソースからインストールされたプログラムのターミナルコマンドを作成する方法
- 20. 複数のソースから1つのSpark Dataframeを作成しますか?
- 21. 生成されたソースでウェルドルックアップクラスを作成する方法
- 22. pandas DataFrameから作成されたColumnDataSourceのインデックスのソースは何ですか?
- 23. HTMLソースからPDFドキュメントを生成するには、次のiTextPdf
- 24. Webpack:同じソースから複数のCSSファイルを生成する
- 25. スパークの摂取経路:「作業者から作業者へのソース」または「作業者からのソース」
- 26. 動的値を収集するソースを作成する方法
- 27. jqueryを作成する方法画像ソースを取得する
- 28. ソースCSファイルを削除するビルドを作成する
- 29. 開始点を使用するには、ソースからテンソルフローを作成する必要がありますか?
- 30. ソース管理Xcodeから作業コピーを削除するには?
アクターリファレンスへの参照を取得するために、なぜ最初に 'run()'をコールする必要があるのか(ストリームを具体化する)理由を説明してください。 – Mihai238
@ Mihai238これは、アクター参照が 'Source.actorRef'の*マテリアライズされた値*であるためです。マテリアライズされた値は、その名前が示すとおり、ストリームのマテリアライゼーション時に生成される値です。 'Source.actorRef'は、複数回マテリアライズできるストリームの青写真なので、マテリアライゼーションごとに別々の' ActorRef'を提供する必要があります。結局のところ、すべてのマテリアライゼーションで「ActorRef」を1つだけ提供すれば、あまり役に立ちません。 –