問題タブ [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 - J Oliver EventStore - サガの例
Saga と EventStore の使用に関するドキュメント/ガイダンスがあるかどうか疑問に思っていました。私の混乱の一部は、NServiceBus や MassTransit などの Service Bus の使用を見ると、Saga の概念もあるということです。EventStore 自体のコードには Saga が含まれていませんが、CommonDomain プロジェクトには含まれており、それらは連携して動作します。CommonDomain/EventStore で Saga インフラストラクチャを使用するか、ServiceBus Saga サポートに依存しますか? それとも両方を一緒に使用できますか?
c# - joliver commondomain/eventstore を使用してドメインをテストする例
JOlivers CommonDomain と EventStore を使用してドメインをテストする良い例を探しています
私は greg youngs のビデオを見てきましたが、彼は素晴らしい単純な抽象集約ルート テスト フィクスチャを持っています。
これらのライブラリで使用できるようなものはありますか?
cqrs - JOliverのEventStore:ServiceStackシリアライザーを使用しているときにイベントを読み取ることができません
ServiceStackを使用する場合、EventMessage.Bodyは逆シリアル化されて元のオブジェクトに戻されません。代わりに、EventMessage.BodyはJSON文字列です。
再現するには:
- EventStoreプロジェクトを開き、EventStore.Exampleプロジェクトに移動します
- EventStore.Serialization.Json参照をEventStore.Serialization.ServiceStackへのプロジェクト参照に置き換えます
- EventStore.Exampleプロジェクトでアセンブリ署名をオフにします
- MainProgram.WireupEventStoreを.UsingServiceStackJsonSerialization()に変更します
- MainProgram.Main()の終わり近くに次のコードを追加します。
-
cqrs - EventStore を使用して、praxis で新しいアプリケーション ビューを構築する方法は?
はい、似たようなことが少なくとも数回前に尋ねられました。したがって、答えはわかります。単純に、新しいハンドラーでイベントを再生するだけです。しかし、実際に実装してみると、いくつかの疑問が生じます。
私はJOlivierのEventStoreを使っています。手始めに、SnapShots の概念を無視して、イベントを取得する方法だけを見ていきます。私ができるのは、次のコードだけです。
もちろん、ここでの最初の質問は次のとおりです。これはそれを行う方法ですか?「GetFrom」のパラメーターの使用に問題があります。これは単なる DateTime であり、すべてのサーバーが時間的に同期されているかどうかを確認できないからです。あるサーバーの時計が別のサーバーの時計より 1 分遅れている場合はどうなりますか? それとも1時間半?私は NServiceBus も使用しているので、新しいハンドラー キューは特定の時点からイベントを積み上げます。新しいアプリケーション ビューが開始時に完全に同期していることを 100% (99% ではありません) 確認しながら、EventStore からイベントを取得する方法を教えてください。
また: コードに特別なインポート メソッドを作成しますか? つまり、新しいアプリケーションのハンドラーが「SomeDomainEvent」を処理するときに電子メールを送信するとします。10,000 件の古いイベントすべてについてメールを送信したくありません。praxis/codeでこの「インポート」をどのように行いますか?
cqrs - JOliviers の CommonDomain と EventStore を使用して集計のリストを取得するには?
CommonDomain のリポジトリは、「GetById()」のみを公開します。たとえば、ハンドラーが顧客のリストを必要とする場合はどうすればよいでしょうか?
cqrs - NES(.NETイベントソーシング)トランザクションは失敗しますか?
NES 0.3(https://github.com/elliotritchie/NES)を試していますが、何が起こるかを理解するのに問題があります。EventStoreの構成をSQLサーバーに変更し、実行がSendMessageCommandHandler.Handle()を終了する直前に例外を挿入したサンプルアプリケーションを実行しています。
次に、ハンドラーとWebサイトを起動します。うまくいく新しいユーザーを作成します。EventStoreテーブルに登録された1つのイベント。それから私はメッセージを送ろうとします。これは私の例外のために失敗します。したがって、バスのトランザクションの性質により、NServiceBusイベントはディスパッチされていません。ただし、EventStoreでは、イベントが登録され、dispatched=1のマークが付けられます。
私は何が欠けていますか?確かに、NServiceBusによってディスパッチされていないときに、ディスパッチとして登録されているべきではありませんか?エラーキュー内の唯一のメッセージは「SendMessageCommand」です。おそらく私の理解が間違っているので、これを著者に問題として報告する前に、ここで質問したいと思いました。
nservicebus - CommonDomain と NEventStore でインターフェイスをイベントとして使用するには?
NServiceBusでJOlivers CommonDomain と EventStore を使用してテストを行っています。Aggregate で次のようにイベントを発生させる必要があります。
そして後で私はこのハンドラーを持っています:
残念ながら、これは機能しません。「CommonDomain.Core.HandlerForDomainEventNotFoundException: タイプ 'Phone' の集合体がタイプ 'IPhoneNumberChanged' のイベントを発生させましたが、メッセージを処理するハンドラーが見つかりませんでした。」.
ここでの問題は、「bus.CreateInstance」から作成されたオブジェクトです。これは、純粋な具体的なクラスで動作するためです。しかし、インターフェイスとしてイベントが必要です。これは解決できますか?
編集:注意してください-オブジェクトを作成するために「bus.CreateInstance」を使用する必要はありません。現在「IPhoneNumberChanged」を上げる必要がある最も簡単な(唯一の)方法です。ハンドラーに引数としてインターフェイスがある限り、他の方法も素晴らしいでしょう。
cqrs - J Oliver EventStore/CommonDomain SagaBase
Jonathan Oliver の CommonDomain ライブラリで SagaBase が一般的なのはなぜですか?
cqrs - NEventStore CommonDomain:アグリゲートが存在しないのにEventStoreRepository.GetByIdが新しいストリームを開くのはなぜですか?
アグリゲートが存在しない場合にEventStoreRepository.GetByIdに新しいストリームを作成させる理由を説明してください。この動作は、GetByIdに二重の責任を与えるように見えます。これは、私の場合、望ましくない結果をもたらす可能性があります。たとえば、私のアグリゲートは常にファクトリメソッドを実装して作成するため、最初のイベントでアグリゲートのIDが設定されます。アグリゲートが存在する前にコマンドが処理された場合、アグリゲートにIDが設定されていないか、他の状態が初期化されていなくても、コマンドが成功する可能性があります(null参照例外を伴うcrash-n-burnも同様に発生する可能性があります)。
時期尚早の作成とコマンド処理を防ぐために、集約が存在しない場合は、GetByIdに例外をスローさせたいと思います。
mongodb-.net-driver - 不明な識別子値 'MyEvent'
joliver/EventStoreで MongoDB 永続化エンジンを使用すると、エラーが発生しますUnknown discriminator value 'MyEvent'
。この問題は、次のようなイベントを再生するためにすべてのイベントをロードしようとしたときにのみ発生しますthis.storeEvent.Advanced.GetFrom(new DateTime(2010, 1,1))
問題は ExtensionsMethods.cs で発生します
私の構成は次のようなものです:
しかし、ほぼすべての種類のシリアライザーオプションを試しました。