DDD 中的应用程序事件?
Application Events in DDD?
这个问题类似于:,但我不知道如何将那里给出的解释应用到我的具体问题。
我有一个 SearchFilmUseCase
,我想在它完成执行后引发一个事件 FilmSearchedEvent
。目前,应用层正在引发该事件。我可以从域中引发此事件的唯一方式是在 FilmRepository
中。但是,存储库只是一个接口,所以我不能在那里引发任何事件。
我认为在应用层引发事件是不正确的。我该如何处理这种情况?
所有领域事件都必须从领域层引发。最好的地方是真正应该执行操作的聚合根。
聚合根可以包含所有已经引发的域事件,在应用层你可以获取它们并将它们发布到事件总线。
一种解决方案是创建域服务来执行搜索并引发事件。
这个问题类似于:
我有一个 SearchFilmUseCase
,我想在它完成执行后引发一个事件 FilmSearchedEvent
。目前,应用层正在引发该事件。我可以从域中引发此事件的唯一方式是在 FilmRepository
中。但是,存储库只是一个接口,所以我不能在那里引发任何事件。
我认为在应用层引发事件是不正确的。我该如何处理这种情况?
所有领域事件都必须从领域层引发。最好的地方是真正应该执行操作的聚合根。 聚合根可以包含所有已经引发的域事件,在应用层你可以获取它们并将它们发布到事件总线。
一种解决方案是创建域服务来执行搜索并引发事件。