当前位置: 首页 > 面试题库 >

Axon Framework的真实生活体验

庄飞
2023-03-14
问题内容

在研究用于项目的CQRS的过程中,我遇到了Axon
Framework
,并且我想知道是否有人对它具有任何现实生活的经验。需要明确的是,我要问的是框架,而不是CQRS作为架构模式。

我的项目已经使用Spring和Spring
Integration,非常适合Axon自己的要求,但是在花很多时间之前,我想知道是否有人有第一手经验。我特别感兴趣的是我可能会从文档中看不到的陷阱。


问题答案:

该框架在很大程度上依赖于事件源,这意味着所有状态更改都将作为事件写入数据存储。”

这是完全不正确的,它不严重依赖事件源。在此框架中用于存储聚合的一种实现方式是使用事件源,但是您也可以轻松地使用提供的类来使用标准关系模型。

使用事件源会更好。

因此,您拥有所有数据的历史参考。这很好,但是使您在生产后更改域变得非常艰巨,尤其是如果您以系统“强大的可审计性”出售了客户>

我认为使用仅存储当前状态的标准关系模型不会容易得多。

该框架鼓励对数据进行非规范化,以至于有人建议>在应用程序中为每个视图都具有一个表。这使您的应用程序极难维护,特别是当原始开发人员不在时”

这与框架无关,但与使用中的架构模式(CQRS)无关。遗憾的是,拥有一个非规范化器/视图是一个好主意,因为它仍然是一个简单的对象。

因此维护很容易,因为SQL请求/插入也很容易。所以这个论点不是很强烈。一个使用1000个表模型的视图在任何地方都具有内部联接以及复杂的SQL查询怎么样?

同样,CQRS很有帮助,因为从根本上说,视图数据只是表中与视图相对应的SELECT *。

如果您以某种方式在事件处理程序之一中犯了一个错误,则唯一的选择是>“重播”事件日志,这取决于数据的大小可能需要很长时间。但是,此工具尚不存在。

我同意这一点,即目前缺乏重播事件的工具,而且这可能需要很长时间。但是,从理论上讲,仅重播事件的一部分而不是事件存储的所有内容是可能的。

重播会产生副作用,因此>开发人员会害怕这样做

重播事件有副作用->这是不正确的。对我来说,副作用意味着修改系统状态。在基于事件的CQRS应用程序中,状态存储在事件存储中。重播事件不会修改事件存储。您可以在模型的查询方面产生副作用。但是您不必担心是否犯了一个错误,因为您仍然可以更正错误并再次播放事件。

让开发人员搞混使用此框架非常容易。如果他们没有在事件中存储对域对象的更改,则下次您重播事件时,您会感到惊讶。

好吧,如果您滥用和误解了体系结构,概念等,那么我同意。但是也许问题不在于这里的框架。

你应该存储三角洲的吗?绝对值?如果您不对开发人员保持关注,那么您必定会两者兼而有之。

我可以说,对于每个系统,我都会说它与框架本身没有直接关系。就像在说:“
Java很烂,因为如果有人编写了不好的hashCode实现和equals方法,那么您可能会搞砸一切。”

对于您的评论的最后一部分,我已经看到了带有Spring框架的示例helloWorld。当然,在一个简单的示例中,它是完全没有用的。

请谨慎评论,以使概念(CQRS + EventSourcing)与框架有所不同。请有所作为。



 类似资料:
  • 我正在学习DDD,刚刚面临一个我无法解决的问题。假设我们有以下领域: 现在我们想模拟客房预订。 清晰可见,2个聚合包含(共享)单个实体。从业务角度来看是有意义的,但是从DDD角度来看,看起来2个聚合共享同一个实体。 这种方法是正确的,还是违反了“实体可以是单个聚合的一部分”规则

  • 本文向大家介绍PHP获取真实客户端的真实IP,包括了PHP获取真实客户端的真实IP的使用技巧和注意事项,需要的朋友参考一下 REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。 HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被

  • 问题内容: 可以在Swing应用程序中使用Font Awesome吗?如果可能的话,那么如何将其图标与Swing组件(JButton或JLabel)一起使用。我之前在Primefaces应用程序中使用过Font Awesome。 问题答案: 在http://jiconfont.github.io/尝试jIconFont(Swing或JavaFX) 例:

  • 1.接口描述 检查用户拍摄的视频是否为活体 请求方式 POST 请求 URL https://cloudapi.linkface.cn/liveness/check_liveness 2.请求参数 字段 类型 必需 描述 api_id string 是 API 账户 api_secret string 是 API 密钥 motions string 是 用户动作序列 complexity int

  • 问题内容: Font Awesome 5星图标具有和与众不同之处,两者都是Unicode,现在我想将其用作我的评级系统,首先是常规星,然后单击成为实心星,但是如何在CSS中定义它呢? 码 与我上面的代码我只会得到坚实的星星 问题答案: 普通 版和 实体 版之间的区别是。您只需要调整此值即可在两个版本之间切换: 这是另一个相关的问题,伪元素上的Font Awesome5显示更多[而不是图标显示为正方

  • 我试图在我的应用程序上添加原生admob广告,当我用原生Advanced的示例广告单元id测试时:CA-app-pub-3940256099942544/2247696110,它工作,我在我的应用程序上得到广告,但当我尝试我真正的原生广告id时,它不工作它不能加载广告,它显示空白屏幕,我向谷歌播放市场发布应用程序,我等了3天,但它没有加载,我从广告中得到以下警告。我怎样才能解决这个问题?请帮帮我,