将Axon用于CQRS和事件源。在事件存储中找不到聚合

时间:2020-02-02 11:34:56

标签: axon

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

库存服务代码:

因此,我创建了清单聚合,其中包含各种命令处理程序。 enter image description here

负责发送命令的库存控制器

enter image description here

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

enter image description here

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

当我尝试再插入一次广告资源时,广告资源服务会抛出异常:

:“ OUT_OF_RANGE:[AXONIQ-2000]无效的序列号0对于聚合0,预期为1”,远程消息处理组件引发了异常:OUT_OF_RANGE:[AXONIQ-2000]无效的序列总数0的数字0,预期为1由OUT_OF_RANGE引起:[AXONIQ-2000]总数0的序列号0,预期为1无效

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

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

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

1 个答案:

答案 0 :(得分:3)

。我意识到我们需要在Spring Boot应用程序中指定axon.eventhandling.processors.name.mode = tracking属性,它才能正常工作。我了解有两种跟踪和发布订阅的模式。我会详细了解它。