AXON のような CQRS パターンは、最終的にイベントをイベント バスにパブリッシュする集約内で apply メソッドを使用し、コマンド ハンドラーも eventbus にアクセスして、commandHandled イベントをイベントバスにパブリッシュします。
長所と短所、いつ何を使用するか
AXON のような CQRS パターンは、最終的にイベントをイベント バスにパブリッシュする集約内で apply メソッドを使用し、コマンド ハンドラーも eventbus にアクセスして、commandHandled イベントをイベントバスにパブリッシュします。
長所と短所、いつ何を使用するか
イベント ソーシングを採用する場合、通常、集計の Apply メソッドには、イベントの発行に加えて、イベント ストアでのイベントの永続化が含まれます。
一方、コマンド ハンドラーでイベントを直接公開すると、通常、コマンドがさまざまな種類のイベントを発行する可能性がある場合に、集計でより多くの詳細を公開する必要があります。例えば:
//in command handler
public void handle(FooCommand command) {
Foo aggregate = //retrieve aggregate
aggregate.handle(command)
if (aggregate.isFoo()) {
eventBus.publish(aFooEvent)
} else if (aggregate.isBar()) {
eventBus.publish(aBarEvent)
}
}