問題タブ [axon]
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.
spring-boot - Axon イベント ハンドラが機能しない
私は小さな cqrs 実装を開発していますが、非常に新しいです。各ハンドラー (コマンドとイベント) を集約から分離し、すべてが正常に機能していることを確認したいと考えています。コマンド ハンドラーはコントローラーからトリガーされますが、そこからイベント ハンドラーはトリガーされません。誰でもこれについて助けてください。
}
}
@Component public class UserCommandHandler {
}
}
@Component public class UserEventHandler {
}
}
domain-driven-design - 集約ルート ファクトリ メソッドは、イベントを発行する代わりにコマンドを返すことができますか?
Vaughn Vernon のImplementing Domain-Driven Design
著書では、Aggregate Root でのファクトリ メソッドの使用について説明しています。1 つの例は、Forum
集約ルートstartDiscussion
を返すファクトリ メソッドを持つDiscussion
集約ルートの例です。
このファクトリ パターンをイベント ソーシング システム、特に Axon でどのように実装しますか?
私は慣例的に、次のように実装できると信じています:
StartDiscussionCommand
-> DiscussionStartedEvent
-> CreateDiscussionCommand
->DiscussionCreatedEvent
StartDiscussionCommand
によって処理される を起動し、Forum
をForum
パブリッシュしDiscussionStartedEvent
ます。外部イベント ハンドラーは をキャッチしDiscussionStartedEvent
、変換して、 を起動しCreateDiscussionCommand
ます。別のハンドラーがDiscussion
を使用してをインスタンス化しCreateDiscussionCommand
、を起動Discussion
しますDiscussionCreatedEvent
。
代わりに、代わりに次のものを使用できますか:
StartDiscussionCommand
-> CreateDiscussionCommand
->DiscussionCreatedEvent
をStartDiscussionCommand
起動すると、コマンド ハンドラがトリガーされ、Forum
を返す の startDiscussion() メソッドが呼び出されCreateDiscussionCommand
ます。次に、ハンドラーは this をディスパッチしCreateDiscussionCommand
ます。別のハンドラーがコマンドを受け取り、これを使用してインスタンス化しますDiscussion
。Discussion
を発射しDiscussionCreatedEvent
ます。
最初のプラクティスには 4 つの DTO が含まれますが、2 番目のプラクティスには 3 つの DTO のみが含まれます。
どのプラクティスを優先すべきかについて何か考えはありますか? または、これを行う別の方法はありますか?
java - 別のクラスのイベント ハンドラー Axon 3.0.3
ここでは、Axon と Spring を使用して、かなり単純な CQRS セットアップを行いました。
これは構成クラスです。
これは私の集計です...
これは、別の .java ファイルにある私の EventHandler です...
CommandGateway を使用して、元の作成コマンドを送信しています。Aggregate の CommandHandler はコマンドを正常に受け取りますがapply
、Aggregate 内で呼び出して新しいイベントを渡すと、外部クラスの EventHandler が呼び出されません。Aggregate クラス内に直接ある EventHandler のみが呼び出されます。
イベントを EventBus に直接発行しようとすると、外部の EventHandler が呼び出されます。
apply
Aggregate内で呼び出したときに、外部JavaクラスのEventHandlerが呼び出されない理由は何ですか?