使用 Axon 进行 CQRS 和事件溯源。在事件存储中找不到聚合

Using Axon for CQRS and event sourcing. Aggregate not found in event store

我是 Axon 的新手,编写了一个示例代码,其中我们有一个库存服务,用于添加新库存、更新库存,我们希望将事件发送到产品服务以进行任何更新。产品服务应充当库存服务的只读副本。

库存服务代码:

所以我创建了各种命令处理程序的 Inventory Aggregate。

库存控制器负责发送命令

在产品服务中,我添加了事件处理程序

我目前面临的问题是,当我添加新库存时,它会反映在产品服务数据库中,但是当我尝试进行更新时,它给了我一个例外: 命令 'com.example.demo.command.UpdateInventoryCommand' 导致 org.axonframework.commandhandling.CommandExecutionException(在事件存储中未找到聚合) org.axonframework.axonserver.connector.command.AxonServerRemoteCommandHandlingException: 远程消息处理组件抛出异常: 在事件存储中找不到聚合

当我尝试再插入一个库存时,库存服务抛出异常说:

: "OUT_OF_RANGE: [AXONIQ-2000] Invalid sequence number 0 for aggregate 0, expected 1", 远程消息处理组件抛出异常: OUT_OF_RANGE: [AXONIQ-2000] Invalid sequence number 0 for aggregate 0,预期 1 由 OUT_OF_RANGE 引起:[AXONIQ-2000] 聚合 0 的无效序列号 0,预期 1

任何帮助将不胜感激。 完整代码位于:

https://github.com/jahanvibansal/Axon-ProductService

https://github.com/jahanvibansal/Axon-InventoryOrderService

。我意识到我们需要在 spring 引导应用程序中指定 axon.eventhandling.processors.name.mode=tracking 属性 以使其正常工作。我知道有两种模式跟踪和发布订阅。我会阅读更多相关信息。