如何在 Axon Framework 中重新水化状态存储的聚合体

How to rehydrate state stored aggregates in Axon Framework

我在 PostgreSQL 数据库中存储了状态聚合。我正在通过删除存储的状态 tables 和 token_entry table 并重新启动应用程序来测试重放。所有事件都将重播,聚合将在内存中恢复。但是,我存储的状态 tables 保持为空。我还以为他们也会恢复呢?

我正在使用 SpringBoot 和最新的 Axon。代码,此刻,已经是最简单的了。

只要您使用 Axon 的 State-Stored Aggregates,它们只会被存储 as-is。因此,丢弃存储的实例并启动应用程序不会触发重放。

当通过调用 StreamingEventProcessor#resetTokens 删除 TrackingTokensinitiating a replay 时(顺便说一句,这是推荐的方法),您实际上是在告诉应用程序的事件处理器从头开始事件流。

Axon 框架的这一部分支持 CQRS 的 so-called 查询端。 Axon Framework 中的聚合支持专门针对应用程序的命令端。

长话短说,State-Stored 聚合不支持重播。如果您希望重放聚合(命令模型),则必须改用 Event Sourcing Aggregates

我希望上面的内容能澄清你的问题中令牌和聚合之间的误解。顺便说一下,如果您觉得 Axon 的参考指南应该进行调整以阐明您的情况,您随时可以 file an issue.