axon - 我应该在 Axon 的同一个包中声明异常吗?
问题描述
我知道 Axons messgaes 应该位于同一个包中。但是其他应用程序中使用的异常也应该在同一个包中吗?
因为我在做传奇和补偿交易
例如,当 PaymentService 应用程序的 PaymentAggregates 实例将抛出 NotEnoughMoneyException(如果没有足够的钱)并且 OrderManagermentSaga(orchestration Saga 实例)必须从 PaymentService 接收异常时,异常是否应该具有相同的包?
我说得太多了,重点是“其他应用程序中使用的异常也应该在同一个地方吗?”
解决方案
对此的简短回答是“视情况而定”。不过,让我给你一个更详细的解释。
它取决于您如何回复处理某些消息的失败场景。您是否正在尝试序列化异常并将其推送到网络上?或者,您会捕获异常并将其调整为其他内容吗?
第一步是 Axon曾经做过的事情。该框架已调整为在最近的版本中包含任何异常。HandlerExecutionException
(HandlerExecutionException
有一个特定于命令和查询的版本)带有一个所谓的details
Object
. Axon 将确保此对象作为HandlerExecutionException
.
此details
对象的目的是让您可以在应用程序中构建自己的异常 API。这个 API 确实应该是您存储消息的同一个包的一部分,因为它是您的核心 API 的一部分。
实际上,我已经记录了如何填充这些细节对象。如果你有兴趣,你可以在这里找到。还有另一个示例,角度略有不同(阅读:它不使用@ExceptionHandler
注释),您可以在此处找到。最后,虽然相当微薄,但参考指南中也有一些关于此的内容。
推荐阅读
- java - 来自目标 C 的 AES 加密字符串未被 Java 解密函数解密
- maven - 如何使用 Maven、Jenkins Pipeline 和 Artifactory?
- excel - 将 Excel 数据表条目拉入 Outlook 电子邮件模板的收件人
- python - octave如何创建稀疏子矩阵
- angular - 升级后编译时出现 Angular 2.3.1 问题(可能是路由器问题?)
- file - 如何在 Sublime Text 3 中更快地创建目录
- r - 拆分数据帧并写入 csv
- mysql - 一系列单元格中一组术语的出现次数
- java - Azure 事件中心 Java 客户端未处理数据
- ios - 如何在导航控制器上方添加视图?