問題タブ [neventstore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1226 参照

events - CQRS イベント発行セットアップ用の NServiceBus

現在、CQRS ベースのプロジェクトをセットアップしています。各 Web プロジェクト インスタンスは NEventStore を実行しますが、すべて同じ EventStore 永続性 (基礎となるデータベース) を共有します。

ここで、保存されたイベントを発行したいと思います。ReadModel (Web プロジェクト インスタンスごとに 1 つ) だけでなく、追加のイベント コンシューマ (たとえば、システムから何らかの方法でイベントを通知する必要があるレガシー アプリケーションなど) にも発行します。もっと)。

したがって、x 個のイベント コンシューマー (= イベント ハンドラー) と y 個のイベント パブリッシャーがありますが、イベントの「実際のソース」は 1 つだけです (基になる EventStore データベース)。

Q1:パブリッシュ/サブスクライブを介してこれらのシステムを接続するためのベスト プラクティスはありますか?

NServiceBus を介して EventStore からイベントを発行することを考えました。すべてのコンシューマーは、必要なイベント タイプをサブスクライブする必要があります。したがって、各コンシューマーも、おそらく複数のパブリッシャーでサブスクライブする必要があります。Q2 : これは可能ですか? 複数の場所で同じイベントをサブスクライブできないことを読みました。次を参照してください: David Boike 「QueueName@WebServer1 で Message1 をサブスクライブすると、QueueName@WebServer2 からの Message1 をサブスクライブすることもできなくなります。」

その他の未解決の質問: Q3:コンシューマーが完全にシャットダウンされたことを検出する方法 (バスからのサブスクライブが正常に解除されていない場合)。-> キューがいっぱい!? これを、ネットワーク接続が少しだけ失われた状況と区別する方法は?

Q4:サブスクリプション サービスと EventStore の間の接続が不安定で失敗した場合はどうなりますか? コンシューマはサブスクリプション サービスに正常に登録されますが、EventStore は新しいサブスクリプションを認識せず、メッセージを配信しません...

Q5:一般に: NServiceBus はキューをどのように処理しますか? 消費者が長時間 (たとえば、数日) 連絡が取れない場合はどうなりますか?

0 投票する
3 に答える
2274 参照

cqrs - イベントの再生に関する NEventStore の問題

CQRS + ES を使用しています。ES は NEventStore (以前の JOliver EventStore) です。異なるコマンドに 2 つの集計があります。2 番目の AR の射影は、読み取りモデルの最初の AR 射影によって書き込まれたデータに依存します。問題は、ソフトウェアを実行するとすべてが高速になり、2 つの集計が同じ日時 (列 CommitStamp) でイベント ストアに保持されることがあるということです。イベントを再生すると、CommitStamp 列の順序で最初から取得されます。ただし、2 つのストリームが同一の CommitStamp であり、間違った順序で取得された場合、読み取りモデルの予測は例外で失敗します。

この問題を解決する方法はありますか?

===============================

github https://github.com/NEventStore/NEventStore/issues/170でのこの問題に関する議論は次のとおりです 。

===============================

EDIT : これは現在、イベントを再生する方法です。GetFrom(...) の仕組みを調べたところ、 commitstamp 列が順序付けに使用されていないことがわかりました。やはりコミット順はありません。そのため、イベントの再生を開始すると、今日のイベント、次は 2 年前に記録されたイベント、次などのイベントが返される場合があります。

0 投票する
0 に答える
449 参照

event-sourcing - 2pc を回避しながら集約ルートからコマンドをディスパッチする方法

(優れた) NEventStore を使用して、集約ルート イベントのストリームを永続化しています。何らかの状態変化に応答して、集合体はコマンドを別のエンドポイントにディスパッチします。集約ルートは、渡されたサービスを使用してコマンドを送信します。これは、msdtc を使用している間は正常に機能しますが、明らかにコストがかかります。

2pc という悪を目の当たりにしたので、フォールト トレランスが組み込まれたアーキテクチャに移行したいと思います。起動時に、NEventStore が以前に失敗したイベントを自動的にディスパッチすることを理解しています。

これは、集約のイベントが正常にディスパッチされた後、つまり、IDispatchCommits.Dispatch メソッド内からの特定のイベントに応答して他のエンドポイントにコマンドをディスパッチした後に、すべての外部状態変更機能が発生する必要があることを示唆していますか?

それとも、おそらく作業単位の方がよいでしょうか?

0 投票する
1 に答える
125 参照

c# - J Oliver EventStoreRepository がスナップショットを返さない

J Oliver によって作成された EventStore および CommonDomain フレームワークを使用しています。スナップショットを作成すると、それが集計ファクトリに渡されないことに気づきました。その理由を知りたいです。これは、集計を構築する集計ファクトリ メソッドです。

これをメソッドに追加したときから、スナップショットで埋める必要がある場合、スナップショットパラメーターは null です。

スナップショットがいっぱいであることを示しています。ここで何が起こっているのですか?

0 投票する
2 に答える
4798 参照

cqrs - NEventStore と EventStoreDB の違い

最近、私は CQRS を学んでおり、イベント ソーシング パターンを使用するようにシステムを変更したいと考えています。

しかし、.Net プラットフォームには 2 つの Event Store 実装があることがわかりました。

  1. NEventStore(旧JOliver EventStore)
  2. EventStoreDB (EventStore.com から)

2 つの実装は私を混乱させます - 誰かがそれらの間の主な違いを説明してください。