CQRS:Apply()vs eventBus.publish()

时间:2014-12-18 07:05:52

标签: nservicebus cqrs axon

像AXON这样的CQRS模式在聚合中使用apply方法,最终将事件发布到事件总线,命令处理程序也可以访问eventbus以将commandHandled事件发布到eventbus。

有什么优点和缺点以及何时使用什么?

1 个答案:

答案 0 :(得分:1)

聚合中的应用方法通常涉及在采用事件采购时除了事件发布之外在事件存储中保留事件。

另一方面,直接在命令处理程序中发布事件通常会强制您的聚合在命令可能发出不同类型的事件时公开更多详细信息。例如:

//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)
    }
}