Axon 事件处理程序应该 - 间接地 - 发出新事件

时间:2021-02-19 15:34:07

标签: eventhandler axon

我有一个应用程序,其中包含针对某些对象存储自定义查询。这些对象在另一个应用程序中管理,因此我只在这些对象发生某些事情时接收事件。

现在,每次出现此类对象的新实例时——我通过事件知道——我想检查它是否与我的任何自定义查询匹配,如果匹配,则发出一个事件,表明存在新匹配。

查询事先不知道哪些对象可能匹配,而对象反过来也不知道这些查询中的任何一个的存在。所以根据我的理解,saga 不会帮助我解决这个问题。

但我认为事件处理程序不应直接发出新事件。所以我想知道我是否应该创建一个命令来发送到我的查询对象,以便它可以执行并检查匹配,或者是否有其他一些我可以应用的模式。

我不认为我的自定义查询聚合是检查新匹配项的正确位置,因为它实际上并不关心;它只是管理查询。但是不得不引入一个新的聚合并向它发送一个命令,只是为了让它检查新的匹配项,感觉它也可能不是正确的地方。

对这个问题有什么建议吗?

1 个答案:

答案 0 :(得分:2)

对我来说这看起来像是基于集合的验证! 如果是这样的话,AxonIQ 有一个关于这个问题/模式以及使用 AxonFramework 解决它的方法的不错的博客!

https://axoniq.io/blog-overview/set-based-validation

基本上,您可以在您的 Aggregate 附近放置一个投影,您可以在其中检查这些值(无论它们是否存在)。请注意,这些预测应该永远暴露给外部世界,并且只能由配置了订阅事件处理器的聚合本身使用,这意味着它们将立即更新。