gpt4 book ai didi

rabbitmq - AXON框架同步响应

转载 作者:行者123 更新时间:2023-12-04 15:52:12 28 4
gpt4 key购买 nike

我是 AXON 框架的新手,正在使用它进行我们的开发。我们有一个要求,为持久数据创建命令(命令端),因为触发了在查询端使用的相同事件。现在我们需要从查询端返回命令端的响应,说明记录是否成功保存到数据库中(自定义成功消息),或者如果失败则说明失败原因(自定义异常消息作为响应)。如果有任何方法可以实现这种情况,请提供帮助。

这里的命令端和查询端是​​ 2 个不同的微服务,我们使用 Rabbit Mq 作为事件驱动技术。

提前致谢

最佳答案

我认为您要问的是是否有一种方法可以在单个事务中处理命令和事件?

如果您使用 subscribing event processor ,在同一个 JVM 中运行,同步处理事件,并在事件处理程序中出现异常时回滚整个事务。这里不是这种情况,因为您有松散耦合的独立服务,这很好。

对于带有命令处理程序的聚合来说,最好的做法是拥有所有可用的信息来决定命令是否可以成功处理,并且当一个事件被应用时,这是一个信号,表明它已经发生,而另一个必须通知服务(在这种情况下是查询方)。查询模块否决这一点(“你说它发生了,我说它没有发生”)并不是一个好习惯。如果查询端出现错误,您将修复它,然后重播该事件。

如果它确实是整个系统必须知道的事件处理程序中的错误,那么它确实是一个单独的事件。您可以直接在事件总线上应用此类事件并通知整个系统。像这样:

 @Autowired
private EventBus eventBus;

(...)

CatastrophicFailureEvent failureEvent = new CatastrophicFailureEvent("OH NO!");
eventBus.publish(GenericEventMessage.asEventMessage(failureEvent));

关于rabbitmq - AXON框架同步响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413637/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com