問題タブ [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.
cqrs - CommonDomain/EventStoreインターフェイスのフェッチ
実装するインターフェースを使用して集約ルートにアクセスしたいのですが、次のようになります。
これを実現するには、CommonDomainまたはEventStoreに何を伝える必要がありますか?IConstructAggregatesは、イベントを格納したアグリゲートの実装タイプを受け取ると思います。自分のIDマップを保持する必要がありますか?
たとえば、私がこれらのaggのルーツを持っているとしましょう:
'idFromAggRoot1'を持つaggregate1インスタンスをすでに保存しました。今、私はそのようにフェッチしたい:
IInterface1には2つの実装者がいるので、後で何を作成する必要があるかをどのように知ることができますか?AggRoot1?AggRoot2?IInterface1?アクティベーターはここで爆撃するので、IConstructAggregatesを実装する必要があることはわかっていますが、元のcommitaggrootタイプを教えてくれる他の記述子があるかどうか疑問に思います。
azure-sql-database - SQL Azure をストレージとして使用するように EventStore を構成する方法を教えてください。
Jonathan Oliver の EventStore を SQL Azure と連携するように構成する方法の例を探しています。どんな助けでも大歓迎です。ありがとう。
cqrs - JOlivier EventStoreの違いとStreamRevisionとCommitSequenceの使用法?
JOliversの「EventStore」を見ると、1つのイベントのみをコミットした場合、StreamRevisionとCommitSequenceは同じであることがわかります。そして、でイベントを選択するために使用されるのはStreamRevisionです。
最初に1つのイベントをコミットするアグリゲートを作成したとします。その後、SQLデータベーステーブルを次のように表示する10個のイベントをコミットしました(簡略化)。
これから派生する2つの質問があります:
これはStreamRevisionとCommitSequenceの違いですか?
ストアは、「minRevision」と「maxRevision」を受け取る「GetFrom」メソッドを公開します。上記のデータを使用して、minRevision=4およびmaxRevision=8を要求した場合、これはどのように機能しますか?代わりに「minSequence」と「maxSequence」にすべきではなかったのでしょうか。
ありがとう。
ヴェルナー
cqrs - NCQRSとJOliverEventStore
NCQRSとJOliverのEventStoreの両方を評価した人はいますか?どちらか一方に大きな利点がありますか、それとも異なるオーディエンスを対象としていますか?
私が見たもの:
NCQRSには、NServiceBusのサポートが組み込まれています。サポートされているNSBのバージョンはわかりませんが、NSBでのライセンスの変更により、これが私のプロジェクトの問題になっています。NSB2.1を永遠に使い続けたいとは思わないでください。私はおそらくMassTransitまたはRSBにもっと目を向けているでしょう。NCQRSには、私のような初心者に喜ばれるかなりの量の「はじめに」のヘルプもあるようです。
EventStoreにはバスメカニズムへのフックがあるように見えますが、組み込みの実装はありません(間違っている可能性があります)。EventStoreは3.0リリースでかなりの量の最近の活動をしているようですが、いくつかの簡単なコード例と私が見つけたポッドキャストを除いて、特に初心者にとっては、ふるいにかける以外に多くの助けはないようです。スタックオーバーフローまたはグループ。
既存の比較がある場合は、その方向に私を向けてください。上記の私の仮定が正しくない場合は、私を訂正してください。
cqrs - NEventStoreとSqliteのメモリ内
JSONシリアル化とインメモリモードで実行されているSqliteを使用してEventStoreの永続性を単体テストしようとしています。EventStoreの初期化中に「そのようなテーブルはありません:コミット」という例外が発生します。これは、EventStoreが何らかの方法で接続を閉じて新しい接続を開き、新しいインメモリSqliteインスタンス(Sans Commitsテーブル)を認識させるためだと思います。これを機能させる方法はありますか?
event-sourcing - EventStore3.0と公開イベント
では、Event Store 3.0を介してイベントを公開するための推奨される方法は何でしょうか?私がこのようにEventStoreを接続すると仮定します:
ここで、「DispatchCommit」は次のようになります。
コミットされたイベントが期待どおりに発生するのを見ることができます。ただし、ES 2.0ではIContainerがメッセージディスパッチャーに渡され、バスインスタンスを解決してイベントを送信できました。IDispatchCommitsを実装するクラスを使用しますか?
ES 3.0を使用している人はいますか?
cqrs - NEventStoreSqlPersistenceGetFromページング
私はこれでEventSToreのすべてのイベントをストリーミングしています:
ページングをデフォルトの128に保つと、2989でフェッチされるイベントの数が制限されます。ページングサイズを9000に増やすと、期待どおりにすべてのイベントが取得されます(約7Kのイベントがあります)。
すべてのイベントを確実に取得するための最良の方法は何ですか。つまり、ビューモデルを再構築するときですか?
ところで、私はまだES 2.0を使用していますありがとうございます!
transactions - JOliver EventStore を使用した複数の集計の更新
JOliver の Event Storeを使用して、単一のトランザクションで複数の集計を更新することについて質問があります。私が理解しているように、すべての集計には独自のイベント ストリームが必要です。現在、多くのコマンド ハンドラーは 1 つの集計のみをロードし、その集計のみを更新します (つまり、それらの集計のイベントを保存します) が、複数の集計を更新する必要があるコマンド ハンドラーが存在することが想像できます。そしてもちろん、私はそれをトランザクションの方法で行いたいと思っています。
ただし、イベント ストアでそれを行う方法がわかりません。CommitChanges()
イベントの格納は、イベント ストリームを呼び出すことによって行われます。更新する集計が複数ある場合、 には複数のイベント ストリームがあるため、 への複数の呼び出しが発生しCommitChanges()
ます。これをトランザクション対応にする唯一の方法は、 でラップすることですがTransactionScope
、基盤となるストレージ テクノロジがトランザクションをサポートしていない可能性があるため、あまり意味がありません。だから私はこのコードで終わりますが、これは間違いなく私が探しているものではありません:
これは、イベント ストアの使用方法について何かが完全に欠けているように感じさせます。誰か助けてくれませんか?どうもありがとう!
cqrs - JO の CommonDomain で AR バージョンをそのイベントと共にディスパッチする
Aggregate の現在のバージョンを Read Model に伝える正しい方法を探しています。現在、私が見る唯一の可能性は、次のことを行うことです。
Aggregate はすべての読み取り側イベント ハンドラーに AR バージョンを自動的にディスパッチする必要があると思うので、私はそれが好きではありません。
これを行う他の方法はありますか?
cqrs - EventStore イベントおよびその他の機能の部分的な順序付け
サーバー ソフトウェア内部の信頼できるキューイング メカニズムとしてEventStoreを評価しようとしています。
MSMQ は、メッセージの「会話」内の部分的な順序付け、順序付けられたメッセージをサポートできないため、代替として失敗します。また、メッセージ サイズの制限が 4MB であるため (これは部分的な順序付けで克服できます)。SQL Service Broker は部分的な順序付けをサポートしていますが、プログラムでセットアップして管理するのは面倒です。
EventStore に関するドキュメントは確かにまばらなので、EventStore の経験のある人は次のことを手伝ってくれますか?
- EventStore はイベントのトランザクション処理をサポートしていますか? つまり、処理が失敗した場合、デキューをロールバックできますか?
- さまざまなスレッド、プロセス、またはマシンに複数のリーダーがある場合、EventStore は、各イベントが (一度に、おそらくトランザクション中に) 1 つのリーダーにのみディスパッチ (?) されるように強制します。
- 上記が可能であると仮定すると、異なる「会話」のイベントを任意の順序で同時に読み取ることができますが、同じ会話のメッセージは個別に順番に読むことができますか?
- EventStore は基本的に「少なくとも 1 回」の配信であると読みました。特定のストレージ プロバイダーを使用して、「1 回だけ」の配信を保証することは可能ですか?
- 「毒」イベントはどのように処理されますか? 処理中にエラーになるイベント。おそらく、エラーは本質的に一時的なものであり、再試行できます。おそらく、それは本質的に永続的であり、管理者の介入が必要です。
- 必要に応じて EventStore ストレージを手動で操作できますか? 他の読者が読み続けている間にそれを行うことはできますか?
(ストレージ エンジンでのトランザクションは必須ではないことを読みましたが、私はまだトランザクションの言語を使用して、EventStore レベルでのトランザクションを置き換えるものを意味します。トランザクションからあらゆるものへの切り替えで重大な機能上の結果がある場合は、それらについてコメントしてください。 . すぐにすべての側面を理解する必要はありません. 実験するためにより多くの時間を稼ぐための希望が必要です.)