【发布时间】:2020-05-18 09:48:35
【问题描述】:
我是 Axon 的新手,并编写了一个示例代码,其中我们有一个库存服务,用于添加新库存、更新库存,我们希望向产品服务发送事件以进行任何更新。产品服务应充当 Inventory Service 的只读副本。
库存服务代码:
所以我创建了各种命令处理程序的 Inventory Aggregate。
负责发送命令的库存控制器
在产品服务中,我添加了事件处理程序
我目前面临的问题是,当我添加新库存时,它会反映在产品服务数据库中,但是当我尝试进行更新时,它给了我一个例外: Command '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
任何帮助将不胜感激。 完整代码见:
【问题讨论】:
-
我不认为这是代码问题@PayalBansal,而是更多关于您如何运行和配置 Axon Server 的问题。请更新您的工单,详细说明您的项目是如何启动的、Axon 服务器是如何启动的,以及您是否正在为事件存储方面配置任何细节。
-
是的,我在那之前启动了我的轴突服务器。但是我没有对事件存储方面进行任何配置。我意识到我们需要在 Spring Boot 应用程序中指定 axon.eventhandling.processors.name.mode=tracking 属性才能使其正常工作。我知道有 2 种模式跟踪和发布订阅。我会阅读更多关于它的信息。
-
Aaaah 错过了一点配置。太好了,您自己解决了@PayalBansal!确保将您的回复标记为未来寻求答案的人的答案:-)
标签: axon