問題タブ [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.

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

spring-boot - Axon イベント ハンドラが機能しない

私は小さな cqrs 実装を開発していますが、非常に新しいです。各ハンドラー (コマンドとイベント) を集約から分離し、すべてが正常に機能していることを確認したいと考えています。コマンド ハンドラーはコントローラーからトリガーされますが、そこからイベント ハンドラーはトリガーされません。誰でもこれについて助けてください。

}

}

@Component public class UserCommandHandler {

}

}

@Component public class UserEventHandler {

}

}

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

domain-driven-design - 集約ルート ファクトリ メソッドは、イベントを発行する代わりにコマンドを返すことができますか?

Vaughn Vernon のImplementing Domain-Driven Design著書では、Aggregate Root でのファクトリ メソッドの使用について説明しています。1 つの例は、Forum集約ルートstartDiscussionを返すファクトリ メソッドを持つDiscussion集約ルートの例です。

このファクトリ パターンをイベント ソーシング システム、特に Axon でどのように実装しますか?

私は慣例的に、次のように実装できると信じています:

StartDiscussionCommand-> DiscussionStartedEvent-> CreateDiscussionCommand->DiscussionCreatedEvent

StartDiscussionCommandによって処理される を起動し、ForumForumパブリッシュしDiscussionStartedEventます。外部イベント ハンドラーは をキャッチしDiscussionStartedEvent、変換して、 を起動しCreateDiscussionCommandます。別のハンドラーがDiscussionを使用してをインスタンス化しCreateDiscussionCommand、を起動DiscussionしますDiscussionCreatedEvent

代わりに、代わりに次のものを使用できますか: StartDiscussionCommand-> CreateDiscussionCommand->DiscussionCreatedEvent

StartDiscussionCommand起動すると、コマンド ハンドラがトリガーされ、Forumを返す の startDiscussion() メソッドが呼び出されCreateDiscussionCommandます。次に、ハンドラーは this をディスパッチしCreateDiscussionCommandます。別のハンドラーがコマンドを受け取り、これを使用してインスタンス化しますDiscussionDiscussionを発射しDiscussionCreatedEventます。

最初のプラクティスには 4 つの DTO が含まれますが、2 番目のプラクティスには 3 つの DTO のみが含まれます。

どのプラクティスを優先すべきかについて何か考えはありますか? または、これを行う別の方法はありますか?

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

java - 別のクラスのイベント ハンドラー Axon 3.0.3

ここでは、Axon と Spring を使用して、かなり単純な CQRS セットアップを行いました。

これは構成クラスです。

これは私の集計です...

これは、別の .java ファイルにある私の EventHandler です...

CommandGateway を使用して、元の作成コマンドを送信しています。Aggregate の CommandHandler はコマンドを正常に受け取りますがapply、Aggregate 内で呼び出して新しいイベントを渡すと、外部クラスの EventHandler が呼び出されません。Aggregate クラス内に直接ある EventHandler のみが呼び出されます。

イベントを EventBus に直接発行しようとすると、外部の EventHandler が呼び出されます。

applyAggregate内で呼び出したときに、外部JavaクラスのEventHandlerが呼び出されない理由は何ですか?