DDD 中的应用程序事件?

Application Events in DDD?

这个问题类似于:,但我不知道如何将那里给出的解释应用到我的具体问题。

我有一个 SearchFilmUseCase,我想在它完成执行后引发一个事件 FilmSearchedEvent。目前,应用层正在引发该事件。我可以从域中引发此事件的唯一方式是在 FilmRepository 中。但是,存储库只是一个接口,所以我不能在那里引发任何事件。

我认为在应用层引发事件是不正确的。我该如何处理这种情况?

所有领域事件都必须从领域层引发。最好的地方是真正应该执行操作的聚合根。 聚合根可以包含所有已经引发的域事件,在应用层你可以获取它们并将它们发布到事件总线。

一种解决方案是创建域服务来执行搜索并引发事件。