在Axon中,我可以为每种聚合类型配置不同的存储库吗?我的一些聚合可能是事件源的,而如果不需要审计或恢复到较早的状态,则对其他人来说毫无意义。
在有关存储库和事件存储的文档中,它说要实现接口Repository<T>
,该接口绑定到特定类型的聚合。
/**
* The repository provides an abstraction of the storage of aggregates.
*
* @param <T> The type of aggregate this repository stores.
*/
public interface Repository<T> extends ScopeAware
这让我相信我可以实现一个Repository<Car>
,Repository<Garage>
等等,它可能是也可能不是事件源,用 Spring 注释它们,@Repository
我很高兴。是这样吗?
我知道存在类似的问题,但答案只是说明:
您只能使用单个存储库来加载聚合。
这并没有说明单个存储库是绑定到所有聚合还是绑定到一种聚合类型。
设置验证
作为一个附带问题,使用标准存储库而不是事件源存储库会缓解CQRS 中唯一性约束检查的问题吗?在存储聚合的状态时(与仅事件相反),我可以在底层持久性存储中定义唯一性约束。提交后,命令应该失败并且不应该分派任何事件。我对么?