12

新しいプロジェクトで CRQS + イベント ソーシングのアイデアを実装するために、akka-persistence イベント ソーシング機能を使用したいと考えています。問題は、ドキュメント ( http://doc.akka.io/docs/akka/snapshot/scala/persistence.html ) 以外に、良い例やアプローチ方法のガイドラインが見つからなかったことです。ドキュメントは、プロセッサ、ビュー、チャネルなどのアーキテクチャのすべての構成要素を説明するという点では優れていますが、それらを組み合わせる方法については説明していません。

問題は、akka-persistence で書き込みモデルと読み取りモデルをどのように接続すればよいかということです。私は3つのオプションを思いつきました:

  • 直接接続 EventsourcedProcessor -> ビュー、ビューはすべてのイベントをジャーナルから直接受け取ります。これは最も単純な解決策のように思えますが、このアプローチを使用してプロセッサとビューを異なるノードに分散できるのではないでしょうか。

  • EventsourcedProcessor -> Channel -> View/normal Actor。最初のオプションとの違いは何ですか? これが正しい解決策である場合、なぜ akka-persistence ビルディング ブロックにビューがあるのでしょうか? Channels または PersistentChannels を使用する必要がありますか?

  • EventsourcedProcessor -> ある種のイベント バス (例: context.system.eventStream) -> ビュー/アクター。

最善の方法とその理由は何ですか?

4

4 に答える 4

4

EventsourcedProcessor -> View がそれを行う方法です。ビューはジャーナルから再生されるため、ビューを別のマシンに配置するときは分散ジャーナルが必要です。ジャーナル実装のリストはこちらにあります: http://akka.io/community/

于 2014-03-18T15:01:37.243 に答える
0

このトピックについては、本当に素晴らしい議論が行われています。結論の投稿https://groups.google.com/forum/#!topic/akka-user/MNDc9cVG1Toを貼り付けただけです。読者がこの投稿にたどり着くのに役立つことを願っています.

于 2014-08-28T09:10:08.133 に答える
0

EP のジャーナルから読み取ることはビューを回復/再構築するための優れた方法だと思いますが、ジャーナルをポーリングしているようです (akka.persistence.view.auto-update-interval)。読み取りモデルの同期更新が必要な場合、これは適切ではありません (これは読み取りモデルの良い出発点になる可能性があると示唆されています)。私は回復のためにジャーナルを提案します (そして私自身も使用したいと思います) が、ライブ イベントにはある種の pub-sub アーキテクチャを使用します。これは非常に難しいかもしれませんが、正しいことのように思えます。ただし、Akka Persistence やその他のライブラリを使用して分散 pub-sub を実行する方法を提案したり、それが本当に実用的かどうかについても、私には十分な知識がありません。

別の方法として、フォローしているジャーナルが更新されたときにビューに通知することはできますか?

于 2014-05-04T06:02:05.030 に答える