如何解决Axon 事件处理程序应该 - 间接地 - 发出新事件
我有一个应用程序,其中包含针对某些对象存储自定义查询。这些对象在另一个应用程序中管理,因此我只在这些对象发生某些事情时接收事件。
现在,每次出现此类对象的新实例时——我通过事件知道——我想检查它是否与我的任何自定义查询匹配,如果匹配,则发出一个事件,表明存在新匹配。>
查询事先不知道哪些对象可能匹配,而对象反过来也不知道这些查询中的任何一个的存在。所以根据我的理解,saga 不会帮助我解决这个问题。
但我认为事件处理程序不应直接发出新事件。所以我想知道我是否应该创建一个命令来发送到我的查询对象,以便它可以执行并检查匹配,或者是否有其他一些我可以应用的模式。
我不认为我的自定义查询聚合是检查新匹配项的正确位置,因为它实际上并不关心;它只是管理查询。但是不得不引入一个新的聚合并向它发送一个命令,只是为了让它检查新的匹配项,感觉它也可能不是正确的地方。
对这个问题有什么建议吗?
解决方法
对我来说这看起来像是基于集合的验证! 如果是这样的话,AxonIQ 有一个关于这个问题/模式以及使用 AxonFramework 解决它的方法的不错的博客!
https://axoniq.io/blog-overview/set-based-validation
基本上,您可以在您的 Aggregate
附近放置一个投影,您可以在其中检查这些值(无论它们是否存在)。请注意,这些预测应该永远暴露给外部世界,并且只能由配置了订阅事件处理器的聚合本身使用,这意味着它们将立即更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。